diff options
author | Eric Anholt <[email protected]> | 2010-05-21 09:32:38 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2010-05-21 12:20:39 -0700 |
commit | 68fc4b415e322f6744299e39864fbc377c6eff74 (patch) | |
tree | 4bafffd8b0105174f3c5c0ae327a005be9145990 /progs/samples | |
parent | e4f4489e3fc0b36d72821b55794fb843b2b7fa5f (diff) |
Remove demos that have moved to git+ssh://git.freedesktop.org/git/mesa/demos.
The remaining programs are ones I've had difficulty finding a build
environment for to make the build system or are unit tests that should
probably live next to their code instead. Hopefully people can bring
over the build for remaining pieces they care about.
Diffstat (limited to 'progs/samples')
39 files changed, 0 insertions, 13194 deletions
diff --git a/progs/samples/.gitignore b/progs/samples/.gitignore deleted file mode 100644 index c15b886b884..00000000000 --- a/progs/samples/.gitignore +++ /dev/null @@ -1,48 +0,0 @@ -.cvsignore -accum -anywin -bdemo -binfo -bitmap1 -bitmap2 -blendeq -blendxor -bugger -copy -cursor -demo -depth -eval -ffset -fog -font -font -incopy -line -logo -lthreads -lxdemo -lxgears -lxheads -lxinfo -lxpixmap -nurb -oglinfo -olympic -overlay -pend -point -prim -quad -readtex.c -readtex.h -rgbtoppm -select -shape -sphere -star -stencil -stretch -texture -tri -wave diff --git a/progs/samples/Makefile b/progs/samples/Makefile deleted file mode 100644 index 64fa47addb5..00000000000 --- a/progs/samples/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# progs/samples/Makefile - -TOP = ../.. -include $(TOP)/configs/current - -INCDIR = $(TOP)/include - -LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME) - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLEW_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - -PROGS = accum bitmap1 bitmap2 blendeq blendxor copy cursor depth eval fog \ - font line logo nurb olympic overlay point prim rgbtoppm quad select \ - shape sphere star stencil stretch texture tri wave - - -##### RULES ##### - -.SUFFIXES: -.SUFFIXES: .c - -.c: $(LIB_DEP) - $(APP_CC) -I$(INCDIR) $(CFLAGS) $(LDFLAGS) $< $(LIBS) -o $@ - - -##### TARGETS ##### - -default: $(PROGS) - - -sphere: sphere.o readtex.o - $(APP_CC) -I$(INCDIR) $(CFLAGS) $(LDFLAGS) sphere.o readtex.o $(LIBS) -o $@ - -sphere.o: sphere.c readtex.h - $(APP_CC) -c -I$(INCDIR) $(CFLAGS) sphere.c - -readtex.c: $(TOP)/progs/util/readtex.c - cp $< . - -readtex.h: $(TOP)/progs/util/readtex.h - cp $< . - -readtex.o: readtex.c readtex.h - $(APP_CC) -c -I$(INCDIR) $(CFLAGS) $< -o $@ - - -clean: - -rm -f $(PROGS) - -rm -f *.o *~ - -rm -f readtex.c readtex.h diff --git a/progs/samples/Makefile.dja b/progs/samples/Makefile.dja deleted file mode 100644 index b60a11197b6..00000000000 --- a/progs/samples/Makefile.dja +++ /dev/null @@ -1,25 +0,0 @@ - -# Makefile for sample programs for MS-DOS with DJGPP and ALLEGRO - - - -INCDIR = ../include -LIBDIR = ../lib -include ../common.dja - - _PROGS = accum bitmap1 bitmap2 blendeq blendxor copy cursor depth \ - eval fog font line logo nurb oglinfo olympic overlay point \ - prim quad select shape sphere star stencil stretch texture \ - tri wave - - PROGS = $(_PROGS:=.exe) - - -default: $(PROGS) - -clean: - del *. - -realclean: clean - del *.exe - diff --git a/progs/samples/Makefile.mgw b/progs/samples/Makefile.mgw deleted file mode 100644 index 8bb975be9da..00000000000 --- a/progs/samples/Makefile.mgw +++ /dev/null @@ -1,78 +0,0 @@ -# Mesa 3-D graphics library -# Version: 4.0 -# -# Copyright (C) 1999 Brian Paul All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice 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 -# BRIAN PAUL 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. - -# MinGW samples makefile v1.2 for Mesa -# -# Copyright (C) 2002 - Daniel Borca -# Email : [email protected] -# Web : http://www.geocities.com/dborca - -# MinGW samples makefile updated for Mesa 7.0 -# -# Updated : by Heromyth, on 2007-7-21 -# Email : [email protected] -# Bugs : 1) All the default settings work fine. But the setting X86=1 can't work. -# The others havn't been tested yet. -# 2) The generated DLLs are *not* compatible with the ones built -# with the other compilers like VC8, especially for GLUT. -# 3) Although more tests are needed, it can be used individually! - -# -# Available options: -# -# Environment variables: -# -# Targets: -# <file.exe> build a specific file -# - - - -.PHONY: all -.SUFFIXES: .c .o .exe -.SECONDARY: ../util/readtex.o ../util/showbuffer.o - -TOP = ../.. - -CC = mingw32-gcc -CFLAGS = -Wall -pedantic -CFLAGS += -O2 -ffast-math -D_DLL -CFLAGS += -I$(TOP)/include -I../util -ifeq ($(FX),1) - CFLAGS += -DFX -endif - -CFLAGS += -DGLUT_DISABLE_ATEXIT_HACK - -LD = mingw32-g++ -LDFLAGS = -s -L$(TOP)/lib - -LDLIBS = -lglut32 -lglu32 -lopengl32 - -.c.o: - $(CC) -o $@ $(CFLAGS) -c $< -%.exe: ../util/readtex.o ../util/showbuffer.o %.o - $(LD) -o $@ $(LDFLAGS) $(LDLIBS) $^ - - -all: - $(error Must specify <filename.exe> to build) diff --git a/progs/samples/Makefile.win b/progs/samples/Makefile.win deleted file mode 100644 index e74568f7c96..00000000000 --- a/progs/samples/Makefile.win +++ /dev/null @@ -1,41 +0,0 @@ - -# Mesa 3-D graphics library -# Version: 3.5 -# Copyright (C) 1995-2001 Brian Paul - -# Makefile for GLUT-based demo programs for Windows - -!include <win32.mak> - -##### MACROS ##### - -TOP = .. -INCDIR = ..\include -LIBDIR = ..\lib - -PROGS = accum bitmap1 bitmap2 blendeq blendxor copy cursor depth eval fog \ - font line logo nurb oglinfo olympic overlay point prim quad select \ - shape sphere star stencil stretch texture tri wave - -SRCS = \ - accum.c \ - bitmap1.c \ - bitmap2.c \ - blendeq.c \ - blendxor.c \ - copy.c \ - cursor.c depth.c eval.c fog.c \ - font.c line.c logo.c nurb.c olympic.c overlay.c point.c prim.c quad.c select.c \ - shape.c sphere.c star.c stencil.c stretch.c texture.c tri.c wave.c - -!include "../mesawin32.mak" - -##### TARGETS ##### - -clean:: - -clobber:: - -$(EXES) : $*.obj - @echo $@ - $(link) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS) diff --git a/progs/samples/README b/progs/samples/README deleted file mode 100644 index 853158873c9..00000000000 --- a/progs/samples/README +++ /dev/null @@ -1,520 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -accum - Accumulation test. - - RGBA, SB/DB (SB default). - - cmd line options: - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit - 1 Use filled polygon mode. - 2 Use outlined polygon mode. - -bitmap1 - Bitmap test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - -bitmap2 - Bitmap test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - 1 Toggle display list mode. - 2 Toggle color animation mode. - -copy - Pixel copy test. - - RGBA, SB/DB (SB default). - - cmd line options: - -sb Single buffer mode. - -db Double buffer mode. - -dr Direct render mode. - -ir Indirect render mode. - -f <file name> RGB image file. - - keys: - ESC Quit. - Z Increase zoom factor. - z Decrease zoom factor. - - mouse input: - Left Copy location. - -cursor - Cursor test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - SPACE switch cursor color. - -depth - Z buffer test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - 1 Toggle anti-aliased mode. - 2 Toggle stipple mode. - -eval - Evaluator test. - - RGBA, SB/DB (SB default). - - cmd line options: - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - LEFT Rotate. - RIGHT Rotate. - UP Rotate. - DOWN Rotate. - 1 Toggle dimensions. - 2 Toggle dimensions. - e Use eval mode. - m Use mesh mode. - f Toggle polygon mode. - p Toggle point mode. - c Toggle color mode. - t Toggle texture mode. - l Toggle lighting mode. - -fog - Fog test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - LEFT Rotate. - RIGHT Rotate. - UP Rotate. - DOWN Rotate. - D Increase fog density. - d Decrease fog density. - -font - font test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - Left Shift left. - Right Shift right. - Up Shift up. - Down Shift down. - n Shift in. - m Shift out. - q Scale up x. - w Scale down x. - a Scale up y. - s Scale down y. - z Scale up z. - x Scale down z. - e Rotate clockwise x. - r Rotate counter-clockwise x. - d Rotate clockwise y. - f Rotate counter-clockwise y. - c Rotate clockwise z. - v Rotate counter-clockwise z. - -line - Line test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - W Increase line width. - w Decrease line width. - 1 Toggle stipple mode. - 2 Toggle anti-aliased mode. - -logo - Demo. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - LEFT Rotate. - RIGHT Rotate - UP Move clipping plane. - DOWN Move clipping plane. - Z Translate. - z Translate. - 1 Use GL_POINT polygon mode. - 2 Use GL_LINE polygon mode. - 3 Use GL_FILL polygon mode. - p Toggle polygon fill modes. - 4 Use GL_NICEST for GL_POLYGON_SMOOTH_HINT. - 5 Use anti-aliased polygon mode. - 6 Use aliased polygon mode. - 8 Toggle dither mode. - 9 Toggle stipple polygon mode. - 0 Toggle flat/smooth shading mode. - q Disable cull mode. - w Use front face cull mode. - e Use back face cull mode. - r Use clockwise front face mode. - t Use counter-clockwise front face mode. - y Use MSB first stipple pattern. - u Use LSB first stipple pattern. - a Use brick texture map. - s Use checker texture map. - d Disable texture map. - f Use decal texture environment mode. - g Use modulate texture environment mode. - -nurb - Nurb test. - - RGBA, SB/DB (SB default). - - cmd line options: - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - LEFT Rotate. - RIGHT Rotate. - UP Rotate. - DOWN Rotate. - -olympic - Olymipic rings demo. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - SPACE Restart demo. - -overlay - Overlay plane demo. - - RGBA, SB/DB (SB default). - - cmd line options: - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - SPACE Toggle star weird movement mode. - t Toggle star turbo mode. - -point - Point test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - LEFT Translate. - RIGHT Translate. - UP Translate. - DOWN Translate. - W Increase point width. - w Decrease point width. - 1 Toggle anti-aliased mode. - -prim - Primitive test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - 1 Toggle flat/smooth shade mode. - 2 Toggle outlined/filled polygon mode. - 3 Toggle color mask mode. - -quad - Quadric test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - -dr Direct render mode. - -ir Indirect render mode. - -f <file name> texture file. - - keys: - ESC Quit. - LEFT Rotate. - RIGHT Rotate. - UP Rotate. - DOWN Rotate. - X Rotate. - x Rotate. - 1 Use GLU_FILL draw style. - 2 Use GLU_POINT draw style. - 3 Use GLU_LINE draw style. - 4 Use GLU_SILHOUETTE draw style. - 0 Toggle flat/smooth shade mode. - f Cylce through quadrics. - d Toggle orientation. - A Increase number of stacks. - a Decrease number of stacks. - S Increase number of slices. - s Decrease number of slices. - G Increase radius1. - g Decrease radius1. - J Increase radius2. - j Decrease radius2. - H Increase height. - h Decrease height. - K Increase angle1. - k Decrease angle1. - L Increase angle2. - l Decrease angle2. - z Toggle texture mode. - q Disable cull mode. - w Use front face cull mode. - e Use back face cull mode. - r Use clockwise front face mode. - t Use counter-clockwise front face mode. - y Toggle dither mode. - -select - Selection test. - - RGBA, SB. - - cmd line options: - - keys: - ESC Quit. - LEFT Rotate. - RIGHT Rotate. - Z Increase zoom factor. - z Decrease zoom factor. - d Zoom at current mouse location. - f Print feedback information. - l Toggle outlined/filled polygon mode. - - mouse: - Left Recolor selected triangle. - Center Enlarge selected triangle. - Right Delete selected triangle. - -shape - shape test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - Left Shift left. - Right Shift right. - Up Shift up. - Down Shift down. - n Shift in. - m Shift out. - q Scale up x. - w Scale down x. - a Scale up y. - s Scale down y. - z Scale up z. - x Scale down z. - e Rotate clockwise x. - r Rotate counter-clockwise x. - d Rotate clockwise y. - f Rotate counter-clockwise y. - c Rotate clockwise z. - v Rotate counter-clockwise z. - SPACE switch shapes. - -speed - Speed test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - a Toggle anti-aliased mode. - d Toggle z buffering mode. - f Toggle fog mode. - F Toggle fog hint mode. - s Toggle flat/smooth shading mode. - t Toggle texturing mode. - -sphere - Spheremap test. - - RGBA, SB/DB (SB default). - - cmd line options: - -sb Single buffer mode. - -db Double buffer mode. - -dr Direct render mode. - -ir Indirect render mode. - -f <file name> texture file. - -3 Use RGB components. - -4 Use RGBA components. - - keys: - ESC Quit. - LEFT Rotate about the y axis. - RIGHT Rotate about the y axis. - UP Rotate about the x axis. - DOWN Rotate about the x axis. - a Toggle auto rotate mode. - c toggle between cylinder or cube object. - t Use torus object. - d Use decal texture mode. - m Use modulate texture mode. - l Toggle lighted mode. - f Toggle fog mode. - 0 Use nearest magification filter. - 1 Use linear magification. - 2 Use nearest minification filter. - 3 Use linear minification filter. - 4 Use nearest-mipmap-nearest minification filter. - 5 Use nearest-mipmap-linear minification filter. - 6 Use linear-mipmap-nearest minification filter. - 7 Use linear-mipmap-linear minification filter. - -star - Demo. - - RGBA, SB/DB (SB default). - - cmd line options: - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - SPACE Toggle weird movement mode. - t Toggle turbo mode. - -stencil - Stencil test. - - RGBA, SB. - - cmd line options: - -stretch - Texture test. - - RGBA, SB. - - cmd line options: - -sb Single buffer mode. - -db Double buffer mode. - -dr Direct render mode. - -ir Indirect render mode. - -f <file name> texture file. - - keys: - ESC Quit. - SPACE Start animation. - - mouse: - Left Added stretch point. - -texture - Texture test. - - RGBA, SB/DB (SB default). - - cmd line options: - -sb Single buffer mode. - -db Double buffer mode. - -dr Direct render mode. - -ir Indirect render mode. - -f <file name> texture file. - - keys: - ESC Quit. - LEFT Rotate. - RIGHT Rotate. - UP Rotate. - DOWN Rotate. - T Translate. - t Translate. - s Toggle sphere map mode. - 0 Use nearest magification filter. - 1 Use linear magification filter. - 2 Use nearest minification filter. - 3 Use linear minification filter. - 4 Use nearest-mipmap-nearest minification filter. - 5 Use nearest-mipmap-linear minification filter. - 6 Use linear-mipmap-nearest minification filter. - 7 Use linear-mipmap-linear minification filter. - -tri - Triangle test. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - - keys: - ESC Quit. - LEFT Translate. - RIGHT Translate. - Z Increase zoom factor. - z Decrease zoom factor. - 1 Use point polygon mode. - 2 Use line polygon mode. - 3 Use filled polygon mode. - 4 Use point primitive. - 5 Use line-loop primitive. - 6 Use polygon primitive. - 7 Toggle cull mode. - 8 Use clockwise/counter-clockwise front face mode. - 9 Toggle front/back face cull mode. - v Toggle show verticies mode. - s Toggle flat/smooth shade mode. - h Toggle hide bottom triangle mode. - o Toggle outline mode. - m Toggle dither mode. - 0 Toggle anti-aliased mode. - -wave - Demo. - - RGBA/CI (RGBA default), SB/DB (SB default). - - cmd line options: - -rgb RGBA mode. - -ci Color index mode. - -sb Single buffer mode. - -db Double buffer mode. - -dr Direct render mode. - -ir Indirect render mode. - -grid <x> <y> Number of grids. - -size <number> Size of grid. - -wave <number> Height of wave (floating point number). - -frames <count> Number of frames. - - keys: - ESC Quit. - c Toggle contouring mode. - s Toggle flat/smooth shade mode. - l Toggle lighting mode. - d Toggle depth checking mode. - SPACE Toggle step/animation mode. - n Single step in step mode. - a Toggle spin mode. diff --git a/progs/samples/SConscript b/progs/samples/SConscript deleted file mode 100644 index 134dfa99807..00000000000 --- a/progs/samples/SConscript +++ /dev/null @@ -1,40 +0,0 @@ -Import('*') - -progs = [ - 'accum', - 'bitmap1', - 'bitmap2', - 'blendeq', - 'blendxor', - 'copy', - 'cursor', - 'depth', - 'eval', - 'fog', - 'font', - 'line', - 'logo', - 'nurb', - #'oglinfo', - 'olympic', - 'overlay', - 'point', - 'prim', - 'quad', - 'rgbtoppm', - 'select', - 'shape', - 'sphere', - 'star', - 'stencil', - 'stretch', - 'texture', - 'tri', - 'wave', -] - -for prog in progs: - progs_env.Program( - target = prog, - source = prog + '.c', - ) diff --git a/progs/samples/accum.c b/progs/samples/accum.c deleted file mode 100644 index 24dfc07d2a6..00000000000 --- a/progs/samples/accum.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -GLenum doubleBuffer; -GLint thing1, thing2; - - -static void Init(void) -{ - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearAccum(0.0, 0.0, 0.0, 0.0); - - thing1 = glGenLists(1); - glNewList(thing1, GL_COMPILE); - glColor3f(1.0, 0.0, 0.0); - glRectf(-1.0, -1.0, 1.0, 0.0); - glEndList(); - - thing2 = glGenLists(1); - glNewList(thing2, GL_COMPILE); - glColor3f(0.0, 1.0, 0.0); - glRectf(0.0, -1.0, 1.0, 1.0); - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -static void Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(1); - case '1': - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - case '2': - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - - glPushMatrix(); - - glScalef(0.8, 0.8, 1.0); - - glClear(GL_COLOR_BUFFER_BIT); - glCallList(thing1); - glAccum(GL_LOAD, 0.5); - - glClear(GL_COLOR_BUFFER_BIT); - glCallList(thing2); - glAccum(GL_ACCUM, 0.5); - - glAccum(GL_RETURN, 1.0); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum 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; - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); - glutInitWindowSize( 300, 300); - - type = GLUT_RGB | GLUT_ACCUM; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Accum Test") == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/bitmap1.c b/progs/samples/bitmap1.c deleted file mode 100644 index 517d584e212..00000000000 --- a/progs/samples/bitmap1.c +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define OPENGL_WIDTH 24 -#define OPENGL_HEIGHT 13 - - -GLenum rgb, doubleBuffer, windType; - -float boxA[3] = { - 0, 0, 0 -}; -float boxB[3] = { - -100, 0, 0 -}; -float boxC[3] = { - 100, 0, 0 -}; -float boxD[3] = { - 0, 95, 0 -}; -float boxE[3] = { - 0, -105, 0 -}; -GLubyte OpenGL_bits1[] = { - 0x00, 0x03, 0x00, - 0x7f, 0xfb, 0xff, - 0x7f, 0xfb, 0xff, - 0x00, 0x03, 0x00, - 0x3e, 0x8f, 0xb7, - 0x63, 0xdb, 0xb0, - 0x63, 0xdb, 0xb7, - 0x63, 0xdb, 0xb6, - 0x63, 0x8f, 0xf3, - 0x63, 0x00, 0x00, - 0x63, 0x00, 0x00, - 0x63, 0x00, 0x00, - 0x3e, 0x00, 0x00, -}; -GLubyte OpenGL_bits2[] = { - 0x00, 0x00, 0x00, - 0xff, 0xff, 0x01, - 0xff, 0xff, 0x01, - 0x00, 0x00, 0x00, - 0xf9, 0xfc, 0x01, - 0x8d, 0x0d, 0x00, - 0x8d, 0x0d, 0x00, - 0x8d, 0x0d, 0x00, - 0xcc, 0x0d, 0x00, - 0x0c, 0x4c, 0x0a, - 0x0c, 0x4c, 0x0e, - 0x8c, 0xed, 0x0e, - 0xf8, 0x0c, 0x00, -}; -GLubyte logo_bits[] = { - 0x00, 0x66, 0x66, - 0xff, 0x66, 0x66, - 0x00, 0x00, 0x00, - 0xff, 0x3c, 0x3c, - 0x00, 0x42, 0x40, - 0xff, 0x42, 0x40, - 0x00, 0x41, 0x40, - 0xff, 0x21, 0x20, - 0x00, 0x2f, 0x20, - 0xff, 0x20, 0x20, - 0x00, 0x10, 0x90, - 0xff, 0x10, 0x90, - 0x00, 0x0f, 0x10, - 0xff, 0x00, 0x00, - 0x00, 0x66, 0x66, - 0xff, 0x66, 0x66, -}; - -#include "tkmap.c" - -static void Init(void) -{ - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearIndex(0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-175, 175, -175, 175); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - } -} - -static void Draw(void) -{ - float mapI[2], mapIA[2], mapIR[2]; - - glClear(GL_COLOR_BUFFER_BIT); - - mapI[0] = 0.0; - mapI[1] = 1.0; - mapIR[0] = 0.0; - mapIR[1] = 0.0; - mapIA[0] = 1.0; - mapIA[1] = 1.0; - - glPixelMapfv(GL_PIXEL_MAP_I_TO_R, 2, mapIR); - glPixelMapfv(GL_PIXEL_MAP_I_TO_G, 2, mapI); - glPixelMapfv(GL_PIXEL_MAP_I_TO_B, 2, mapI); - glPixelMapfv(GL_PIXEL_MAP_I_TO_A, 2, mapIA); - glPixelTransferi(GL_MAP_COLOR, GL_TRUE); - - SetColor(COLOR_WHITE); - glRasterPos3fv(boxA); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 24); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 8); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 2); - glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glBitmap(16, 12, 8.0, 0.0, 0.0, 0.0, logo_bits); - - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); - glPixelStorei(GL_UNPACK_LSB_FIRST, GL_TRUE); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - SetColor(COLOR_WHITE); - glRasterPos3fv(boxB); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, OPENGL_WIDTH, 0.0, OPENGL_WIDTH, 0.0, - OpenGL_bits1); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, OPENGL_WIDTH, 0.0, OPENGL_WIDTH, 0.0, - OpenGL_bits2); - - SetColor(COLOR_YELLOW); - glRasterPos3fv(boxC); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, OPENGL_WIDTH, 0.0, OPENGL_WIDTH, 0.0, - OpenGL_bits1); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, OPENGL_WIDTH, 0.0, OPENGL_WIDTH, 0.0, - OpenGL_bits2); - - SetColor(COLOR_CYAN); - glRasterPos3fv(boxD); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, OPENGL_WIDTH, 0.0, OPENGL_WIDTH, 0.0, - OpenGL_bits1); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, OPENGL_WIDTH, 0.0, OPENGL_WIDTH, 0.0, - OpenGL_bits2); - - SetColor(COLOR_RED); - glRasterPos3fv(boxE); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, OPENGL_WIDTH, 0.0, OPENGL_WIDTH, 0.0, - OpenGL_bits1); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, OPENGL_WIDTH, 0.0, OPENGL_WIDTH, 0.0, - OpenGL_bits2); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Bitmap Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/bitmap2.c b/progs/samples/bitmap2.c deleted file mode 100644 index 5faac841622..00000000000 --- a/progs/samples/bitmap2.c +++ /dev/null @@ -1,787 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define EXP_WIDTH 80 -#define EXP_HEIGHT 80 - - -GLenum rgb, doubleBuffer, windType; - -#include "tkmap.c" - -GLenum useLists, abuse; -GLubyte exp_bits[7][800] = { - { - 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, 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, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf2, 0x1f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbe, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf6, 0x4f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xde, 0x7d, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xea, 0xef, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x55, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbf, 0xae, 0x22, 0x36, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xdb, 0xf7, 0x3f, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x50, 0xbf, 0xbf, 0x85, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xee, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x74, 0x4b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x49, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x54, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 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, 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, 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, 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, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x91, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0xf1, 0x53, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x97, 0x5c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x0c, 0x8c, 0x1b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc4, 0x01, 0x00, 0xc8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x00, 0x02, 0x40, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x70, 0x00, 0x0c, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x70, 0xe0, 0x0d, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x72, 0xc8, 0x07, 0x40, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x02, 0x78, 0x2f, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x02, 0xb0, 0x0a, 0x20, 0x77, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x13, 0x10, 0x33, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x02, 0x78, 0xbb, 0x81, 0x09, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0xdc, 0xe7, 0x00, 0x09, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xac, 0x78, 0x00, 0x31, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x03, 0x74, 0x4b, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x02, 0xe8, 0x3e, 0x00, 0x01, 0x10, 0x00, - 0x00, 0x00, 0x80, 0x00, 0xf8, 0x49, 0x80, 0x09, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x40, 0x07, 0x00, 0x05, 0x1c, 0x00, - 0x00, 0x00, 0x80, 0x09, 0x04, 0x80, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x1d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xe3, 0x0b, 0x00, 0x22, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x8f, 0x10, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x4f, 0x20, 0x78, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x80, 0x79, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x7c, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 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, 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, 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, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x60, 0x06, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x07, 0x64, 0x3a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x08, 0x72, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x3b, 0x00, 0x00, 0xc0, 0x33, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x1b, 0x00, 0x00, 0x80, 0x42, 0x00, 0x00, - 0x00, 0x00, 0xd0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0x30, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0xe2, 0x82, 0x03, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, - 0x00, 0x0e, 0x80, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x0e, 0x80, 0x03, 0xec, 0x10, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x12, 0x00, 0x00, 0x05, 0x93, 0x01, 0x00, 0x20, 0x00, - 0x00, 0x12, 0x00, 0x00, 0x00, 0x5c, 0x0c, 0x00, 0x60, 0x00, - 0x00, 0x30, 0x00, 0xc0, 0x05, 0x81, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x2c, 0x00, 0x00, 0xcc, 0x06, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x28, 0x20, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x80, 0x80, 0x22, 0x00, 0x02, 0x00, 0x00, 0x02, - 0x00, 0x20, 0x00, 0x80, 0x02, 0x20, 0x08, 0x00, 0x20, 0x02, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x11, 0x28, 0x00, 0x20, 0x06, - 0x00, 0x20, 0x00, 0x80, 0x0e, 0xc0, 0x21, 0x00, 0x5c, 0x00, - 0x00, 0x24, 0x00, 0x90, 0x40, 0x58, 0x04, 0x00, 0x20, 0x01, - 0x00, 0x24, 0x00, 0x10, 0x22, 0x02, 0x05, 0x00, 0x20, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x28, 0xb6, 0x00, 0x00, 0x20, 0x01, - 0x00, 0x70, 0x00, 0x00, 0x18, 0xc1, 0x00, 0x00, 0xc0, 0x01, - 0x00, 0xc0, 0x00, 0x00, 0x40, 0x83, 0x04, 0x00, 0xc0, 0x01, - 0x00, 0x00, 0x01, 0x80, 0xfc, 0x41, 0x02, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x03, 0x30, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x10, 0x02, 0x00, 0x40, 0x1d, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, - 0x00, 0x00, 0x38, 0x00, 0x81, 0x0f, 0x00, 0x00, 0x2a, 0x00, - 0x00, 0x00, 0xf8, 0x02, 0x80, 0x0f, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0xf8, 0x02, 0x80, 0x0f, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x06, 0xc0, 0x01, 0x00, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x14, 0xe0, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x70, 0x00, 0x00, 0x85, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x30, 0x00, 0x20, 0x3c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x80, 0x00, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0x79, 0x83, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x19, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x28, 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, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x90, 0x00, 0x00, 0x00, 0x40, - 0x02, 0x02, 0x00, 0x80, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x20, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x28, 0x90, 0x05, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x48, 0x05, 0x00, 0x21, 0x00, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x84, 0x00, 0x54, 0x05, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x40, 0x05, 0x80, 0x41, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x02, 0x01, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x08, 0x20, 0x20, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x82, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x48, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x40, - 0x04, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x90, 0x40, 0x40, 0x04, 0x00, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x41, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x40, 0xa0, 0x00, 0x00, 0x00, 0x50, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x40, - 0x40, 0x00, 0x00, 0x00, 0x40, 0x02, 0x04, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x00, 0x80, 0x84, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc2, 0x20, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0xc0, 0x05, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x00, 0x10, - 0x08, 0x00, 0x00, 0x80, 0x00, 0x10, 0x10, 0x00, 0x00, 0x08, - 0x10, 0x02, 0x00, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x08, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3a, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x40, 0x04, - 0x00, 0x60, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0xb8, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 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, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 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, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x08, 0x00, 0x00, - 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x00, 0x01, 0x10, 0x04, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x02, 0x02, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x20, 0x05, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xc4, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x40, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x42, 0x00, 0x00, 0x04, 0x20, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x81, 0x07, 0x01, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x02, 0x80, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x0d, 0x00, 0x00, 0x00, 0x40, 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, 0x40, 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, 0xe0, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 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, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, - 0x02, 0x02, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 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, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, - 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 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, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x02, 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, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 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, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x04, 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, 0x08, 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, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 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, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 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, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x80, 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, 0x01, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 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, 0x04, - 0x00, 0x04, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 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, 0x20, 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, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - } -}; -GLint exp_lists[7]; - - -static void Init(void) -{ - GLint i; - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearIndex(0.0); - - glPixelStorei(GL_UNPACK_LSB_FIRST, GL_TRUE); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - for (i = 0; i < 7; i++) { - exp_lists[i] = glGenLists(1); - glNewList(exp_lists[i], GL_COMPILE); - glBitmap(80, 80, 40.0, 40.0, 0.0, 0.0, exp_bits[i]); - glEndList(); - } - - abuse = GL_FALSE; - useLists = GL_TRUE; -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-175, 175, -175, 175); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case '1': - useLists = !useLists; - break; - case '2': - abuse = !abuse; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - GLint i, j; - - glClear(GL_COLOR_BUFFER_BIT); - - for (i = 0; i < 7; i++) { - for (j = 0; j < 40; j++) { - switch (j % 7) { - case 0: - SetColor(COLOR_YELLOW); - break; - case 1: - SetColor(COLOR_GREEN); - break; - case 2: - SetColor(COLOR_BLUE); - break; - case 3: - SetColor(COLOR_MAGENTA); - break; - case 4: - SetColor(COLOR_CYAN); - break; - case 5: - SetColor(COLOR_WHITE); - break; - case 6: - SetColor(COLOR_RED); - break; - } - glRasterPos3i((j*3)%5, (j*3)%8, 0); - - if (useLists) { - glCallList(exp_lists[i]); - } else { - glBitmap(80, 80, 40.0, 40.0, 0.0, 0.0, exp_bits[i]); - } - if (!abuse) { - break; - } - } - - if (i == 6) { - break; - } - - for (j = 0; j < 40; j++) { - SetColor(COLOR_BLACK); - glRasterPos3i((j*3)%5, (j*3)%8, 0); - if (useLists) { - glCallList(exp_lists[i]); - } else { - glBitmap(80, 80, 40.0, 40.0, 0.0, 0.0, exp_bits[i]); - } - if (!abuse) { - break; - } - } - } - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Bitmap Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/blendeq.c b/progs/samples/blendeq.c deleted file mode 100644 index 037d06fa528..00000000000 --- a/progs/samples/blendeq.c +++ /dev/null @@ -1,311 +0,0 @@ -/* -** blendeq.c - Demonstrates the use of the blend_minmax, blend_subtract, -** and blend_logic_op extensions using glBlendEquationEXT. -** -** Over a two-color backround, draw rectangles using twelve blend -** options. The values are read back as UNSIGNED_BYTE and printed -** in hex over each value. These values are useful for logic -** op comparisons when channels are 8 bits deep. -*/ - -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#include <GL/glew.h> -#include <GL/glut.h> - -GLenum doubleBuffer; -static int dithering = 0; -int use11ops = 0; -int supportlogops = 0; -static int doPrint = 1; -static int deltaY; -GLint windW, windH; - -static const struct { - GLenum mode; - const char *name; -} LogicOpModes[] = { - { GL_SET, "GL_SET" }, - { GL_COPY, "GL_COPY" }, - { GL_NOOP, "GL_NOOP" }, - { GL_AND, "GL_AND" }, - { GL_INVERT, "GL_INVERT" }, - { GL_OR, "GL_OR" }, - { GL_XOR, "GL_XOR" }, - { GL_NOR, "GL_NOR" }, - { GL_NAND, "GL_NAND" }, - { GL_OR_REVERSE, "GL_OR_REVERSE" }, - { GL_OR_INVERTED, "GL_OR_INVERTED" }, - { GL_AND_INVERTED, "GL_AND_INVERTED" }, - { 0, NULL } -}; - - - -static void DrawString(const char *string) -{ - int i; - - for (i = 0; string[i]; i++) - glutBitmapCharacter(GLUT_BITMAP_9_BY_15, string[i]); -} - -static void Init(void) -{ - - glDisable(GL_DITHER); - glShadeModel(GL_FLAT); -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; - - glViewport(0, 0, (GLint)width, (GLint)height); - deltaY = windH /20; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, windW, 0, windH); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 'd': - dithering = !dithering; - break; - case 'l': - if (supportlogops == 3) - use11ops = (!use11ops); - if (use11ops) - printf("Using GL 1.1 color logic ops.\n"); - else printf("Using GL_EXT_blend_logic_op.\n"); - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void PrintColorStrings( void ) -{ - GLubyte ubbuf[3]; - int i, xleft, xright; - char colorString[100]; - - xleft = 5 + windW/4; - xright = 5 + windW/2; - - for (i = windH - deltaY + 4; i > 0; i-=deltaY) { - glReadPixels(xleft, i+10, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, ubbuf); - sprintf(colorString, "(0x%x, 0x%x, 0x%x)", - ubbuf[0], ubbuf[1], ubbuf[2]); - glRasterPos2f(xleft, i); - DrawString(colorString); - glReadPixels(xright, i+10, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, ubbuf); - sprintf(colorString, "(0x%x, 0x%x, 0x%x)", - ubbuf[0], ubbuf[1], ubbuf[2]); - glRasterPos2f(xright, i); - DrawString(colorString); - } -} - -static void Draw(void) -{ - int stringOffset = 5, stringx = 8; - int x1, x2, xleft, xright; - int i, k; - - (dithering) ? glEnable(GL_DITHER) : glDisable(GL_DITHER); - glDisable(GL_BLEND); - if (supportlogops & 2) - glDisable(GL_COLOR_LOGIC_OP); - - glClearColor(0.5, 0.6, 0.1, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - /* Draw background */ - glColor3f(0.1, 0.1, 1.0); - glRectf(0.0, 0.0, windW/2, windH); - - /* Draw labels */ - glColor3f(0.8, 0.8, 0.0); - i = windH - deltaY + stringOffset; - - glRasterPos2f(stringx, i); i -= deltaY; - DrawString("SOURCE"); - glRasterPos2f(stringx, i); i -= deltaY; - DrawString("DEST"); - glRasterPos2f(stringx, i); i -= deltaY; - DrawString("min"); - glRasterPos2f(stringx, i); i -= deltaY; - DrawString("max"); - glRasterPos2f(stringx, i); i -= deltaY; - DrawString("subtract"); - glRasterPos2f(stringx, i); i -= deltaY; - DrawString("reverse_subtract"); - glRasterPos2f(stringx, i); i -= deltaY; - DrawString("clear"); - - for (k = 0; LogicOpModes[k].name; k++) { - glRasterPos2f(stringx, i); - i -= deltaY; - DrawString(LogicOpModes[k].name); - } - - i = windH - deltaY; - x1 = windW/4; - x2 = 3 * windW/4; - xleft = 5 + windW/4; - xright = 5 + windW/2; - - /* Draw foreground color for comparison */ - glColor3f(0.9, 0.2, 0.8); - glRectf(x1, i, x2, i+deltaY); - - /* Leave one rectangle of background color */ - - /* Begin test cases */ - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - - i -= 2*deltaY; - glBlendEquationEXT(GL_MIN_EXT); - glRectf(x1, i, x2, i+deltaY); - - i -= deltaY; - glBlendEquationEXT(GL_MAX_EXT); - glRectf(x1, i, x2, i+deltaY); - - i -= deltaY; - glBlendEquationEXT(GL_FUNC_SUBTRACT_EXT); - glRectf(x1, i, x2, i+deltaY); - - i -= deltaY; - glBlendEquationEXT(GL_FUNC_REVERSE_SUBTRACT_EXT); - glRectf(x1, i, x2, i+deltaY); - - glBlendFunc(GL_ONE, GL_ZERO); - i -= deltaY; - if (!use11ops) - glBlendEquationEXT(GL_LOGIC_OP); - else - glEnable(GL_COLOR_LOGIC_OP); - glLogicOp(GL_CLEAR); - glRectf(x1, i, x2, i+deltaY); - - for (k = 0; LogicOpModes[k].name; k++) { - i -= deltaY; - glLogicOp(LogicOpModes[k].mode); - glRectf(x1, i, x2, i+deltaY); - if (LogicOpModes[k].mode == GL_XOR) { - glRectf(x1, i+10, x2, i+5); - } - } - - if (doPrint) { - glDisable(GL_BLEND); - if (supportlogops & 2) - glDisable(GL_COLOR_LOGIC_OP); - glColor3f(1.0, 1.0, 1.0); - PrintColorStrings(); - } - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } - -} - -static GLenum 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; - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - char *s; - char *extName1 = "GL_EXT_blend_logic_op"; - char *extName2 = "GL_EXT_blend_minmax"; - char *extName3 = "GL_EXT_blend_subtract"; - char *version; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 800, 520); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Blend Equation") == GL_FALSE) { - exit(1); - } - - glewInit(); - - /* Make sure blend_logic_op extension is there. */ - s = (char *) glGetString(GL_EXTENSIONS); - version = (char*) glGetString(GL_VERSION); - if (!s) - exit(1); - if (strstr(s,extName1)) { - supportlogops = 1; - use11ops = 0; - printf("blend_logic_op extension available.\n"); - } - if (strncmp(version,"1.1",3)>=0) { - supportlogops += 2; - use11ops = 1; - printf("1.1 color logic ops available.\n"); - } - if (supportlogops == 0) { - printf("Blend_logic_op extension and GL 1.1 not present.\n"); - exit(1); - } - if (strstr(s,extName2) == 0) { - printf("Blend_minmax extension is not present.\n"); - exit(1); - } - if (strstr(s,extName3) == 0) { - printf("Blend_subtract extension is not present.\n"); - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/blendxor.c b/progs/samples/blendxor.c deleted file mode 100644 index 057143651fd..00000000000 --- a/progs/samples/blendxor.c +++ /dev/null @@ -1,203 +0,0 @@ -/* -** blendxor.c - Demonstrates the use of the blend_logic_op -** extension to draw hilights. Using XOR to draw the same -** image twice restores the background to its original value. -*/ - -#include <stdio.h> -#include <string.h> -#ifndef _WIN32 -#include <unistd.h> -#endif -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -GLenum doubleBuffer; -int dithering = 0; -int use11ops = 0; -int supportlogops = 0; -GLint windW, windH; - -static void Init(void) -{ - glDisable(GL_DITHER); - glShadeModel(GL_FLAT); -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, 400, 0, 400); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 'd': - dithering = !dithering; - break; - case 'l': - if (supportlogops == 3) - use11ops = (!use11ops); - if (use11ops) - printf("Using GL 1.1 color logic ops.\n"); - else printf("Using GL_EXT_blend_logic_op.\n"); - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - int i; - - glDisable(GL_BLEND); - if (supportlogops & 2) - glDisable(GL_COLOR_LOGIC_OP); - - (dithering) ? glEnable(GL_DITHER) : glDisable(GL_DITHER); - - glClearColor(0.5, 0.6, 0.1, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - /* Draw background prims */ - glColor3f(0.1, 0.1, 1.0); - glBegin(GL_TRIANGLES); - glVertex2i(5, 5); - glVertex2i(130, 50); - glVertex2i(100, 300); - glEnd(); - glColor3f(0.5, 0.2, 0.9); - glBegin(GL_TRIANGLES); - glVertex2i(200, 100); - glVertex2i(330, 50); - glVertex2i(340, 400); - glEnd(); - - glEnable(GL_BLEND); - if (!use11ops) - glBlendEquationEXT(GL_LOGIC_OP); - else - glEnable(GL_COLOR_LOGIC_OP); - glLogicOp(GL_XOR); - - /* Draw a set of rectangles across the window */ - glColor3f(0.9, 0.2, 0.8); - for(i = 0; i < 400; i+=60) { - glBegin(GL_POLYGON); - glVertex2i(i, 100); - glVertex2i(i+50, 100); - glVertex2i(i+50, 200); - glVertex2i(i, 200); - glEnd(); - } - glFlush(); /* Added by Brian Paul */ -#ifndef _WIN32 - sleep(2); -#endif - - /* Redraw the rectangles, which should erase them */ - for(i = 0; i < 400; i+=60) { - glBegin(GL_POLYGON); - glVertex2i(i, 100); - glVertex2i(i+50, 100); - glVertex2i(i+50, 200); - glVertex2i(i, 200); - glEnd(); - } - glFlush(); - - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum 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; - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - char *s; - char *extName = "GL_EXT_blend_logic_op"; - char *version; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 400, 400); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Blend XOR") == GL_FALSE) { - exit(1); - } - - glewInit(); - - /* Make sure blend_logic_op extension is there. */ - s = (char *) glGetString(GL_EXTENSIONS); - version = (char*) glGetString(GL_VERSION); - if (!s) - exit(1); - if (strstr(s,extName)) { - supportlogops = 1; - use11ops = 0; - printf("blend_logic_op extension available.\n"); - } - if (strncmp(version,"1.1",3)>=0) { - supportlogops += 2; - use11ops = 1; - printf("1.1 color logic ops available.\n"); - } - if (supportlogops == 0) { - printf("Blend_logic_op extension and GL 1.1 not present.\n"); - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/copy.c b/progs/samples/copy.c deleted file mode 100644 index 353a3a2e1a2..00000000000 --- a/progs/samples/copy.c +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -#include "loadppm.c" - -GLenum doubleBuffer; -GLint windW, windH; - -char *fileName = 0; -PPMImage *image; -float zoom; -GLint x, y; - -static void Init(void) -{ - - glClearColor(0.0, 0.0, 0.0, 0.0); - - x = 0; - y = windH; - zoom = 1.8; -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; - - glViewport(0, 0, windW, windH); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, windW, 0, windH); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 'Z': - zoom += 0.2; - break; - case 'z': - zoom -= 0.2; - if (zoom < 0.2) { - zoom = 0.2; - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Mouse(int button, int state, int mouseX, int mouseY) -{ - if (state != GLUT_DOWN) - return; - x = (GLint)mouseX; - y = (GLint)mouseY; - - glutPostRedisplay(); -} - -static void Draw(void) -{ - GLint src[3], dst[3]; - - glClear(GL_COLOR_BUFFER_BIT); - - src[0] = (int) ((windW / 2.0) - (image->sizeX / 2.0)); - src[1] = (int) ((windH / 2.0) - (image->sizeY / 2.0)); - src[2] = 0; - glWindowPos3ivARB(src); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelZoom(1.0, 1.0); - glDrawPixels(image->sizeX, image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, - image->data); - - dst[0] = x; - dst[1] = windH - y; - dst[2] = 0; - glWindowPos3ivARB(dst); - - glPixelZoom(zoom, zoom); - glCopyPixels(src[0], src[1], - image->sizeX, image->sizeY, GL_COLOR); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum 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; - } else if (strcmp(argv[i], "-f") == 0) { - if (i+1 >= argc || argv[i+1][0] == '-') { - printf("-f (No file name).\n"); - return GL_FALSE; - } else { - fileName = argv[++i]; - } - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - if (fileName == 0) { - printf("No image file.\n"); - exit(1); - } - - image = LoadPPM(fileName); - - windW = 2*300; - windH = 2*300; - glutInitWindowPosition(0, 0); glutInitWindowSize( windW, windH); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Copy Test") == GL_FALSE) { - exit(1); - } - - glewInit(); - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutMouseFunc(Mouse); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/cursor.c b/progs/samples/cursor.c deleted file mode 100644 index de8fc58556c..00000000000 --- a/progs/samples/cursor.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -GLenum rgb, doubleBuffer, windType; -int windX, windY; -int cursor; - - -#include "tkmap.c" - -static void Init(void) -{ - cursor = 0; - glutSetCursor(cursor); - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearIndex(0.0); -} - -static void Reshape(int width, int height) -{ - - windX = width; - windY = height; - glViewport(0, 0, windX, windY); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, windX, 0, windY); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 32: - cursor++; - if (cursor > 19) { - cursor = 0; - } - glutSetCursor(cursor); - } -} - -static void Draw(void) -{ - - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_POLYGON); - SetColor(COLOR_BLACK); - glVertex2i(0, 0); - SetColor(COLOR_RED); - glVertex2i(windX, 0); - SetColor(COLOR_GREEN); - glVertex2i(windX, windY); - SetColor(COLOR_BLUE); - glVertex2i(0, windY); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - windX = 300; - windY = 300; - glutInitWindowPosition(0, 0); glutInitWindowSize( windX, windY); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Cursor Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/depth.c b/progs/samples/depth.c deleted file mode 100644 index afe2ec17a38..00000000000 --- a/progs/samples/depth.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum rgb, doubleBuffer; - -GLenum antiAlias, stipple; -GLubyte stippleBits[32*4] = { - 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, -}; - - -#include "tkmap.c" - -static void Init(void) -{ - GLint i; - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearIndex(0.0); - - if (!rgb) { - for (i = 0; i < 16; i++) { - glutSetColor(i+CI_OFFSET_1, 0.0, 0.0, i/15.0); - glutSetColor(i+CI_OFFSET_2, 0.0, i/15.0, 0.0); - } - } - - glPolygonStipple(stippleBits); - - antiAlias = GL_FALSE; - stipple = GL_FALSE; -} - -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, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case '1': - antiAlias = !antiAlias; - break; - case '2': - stipple = !stipple; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - GLint ci1, ci2; - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - if (antiAlias) { - ci1 = CI_OFFSET_1; - ci2 = CI_OFFSET_2; - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glEnable(GL_BLEND); - glEnable(GL_POLYGON_SMOOTH); - glDisable(GL_DEPTH_TEST); - } else { - ci1 = COLOR_BLUE; - ci2 = COLOR_GREEN; - glDisable(GL_BLEND); - glDisable(GL_POLYGON_SMOOTH); - glEnable(GL_DEPTH_TEST); - } - - if (stipple) { - glEnable(GL_POLYGON_STIPPLE); - } else { - glDisable(GL_POLYGON_STIPPLE); - } - - glBegin(GL_TRIANGLES); - (rgb) ? glColor3fv(RGBMap[COLOR_BLUE]) : glIndexi(ci1); - glVertex3f( 0.9, -0.9, -30.0); - glVertex3f( 0.9, 0.9, -30.0); - glVertex3f(-0.9, 0.0, -30.0); - (rgb) ? glColor3fv(RGBMap[COLOR_GREEN]) : glIndexi(ci2); - glVertex3f(-0.9, -0.9, -40.0); - glVertex3f(-0.9, 0.9, -40.0); - glVertex3f( 0.9, 0.0, -25.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_DEPTH; - type |= (rgb) ? GLUT_RGB : GLUT_INDEX; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Depth Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/eval.c b/progs/samples/eval.c deleted file mode 100644 index 3ad9c5468f8..00000000000 --- a/progs/samples/eval.c +++ /dev/null @@ -1,472 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - - -#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; - default: - 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: - break; - } - break; - default: - break; - } -} - -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, -0.5, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key2(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_LEFT: - rotY -= 30; - break; - case GLUT_KEY_RIGHT: - rotY += 30; - break; - case GLUT_KEY_UP: - rotX -= 30; - break; - case GLUT_KEY_DOWN: - rotX += 30; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - case '1': - arrayType = ONE_D; - break; - case '2': - arrayType = TWO_D; - break; - case 'e': - mapType = EVAL; - break; - case 'm': - mapType = MESH; - break; - case 'f': - polygonFilled = !polygonFilled; - break; - case 'p': - mapPoint = !mapPoint; - break; - case 'c': - colorType = !colorType; - break; - case 't': - textureType = !textureType; - break; - case 'l': - lighting =! lighting; - if (lighting) { - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_AUTO_NORMAL); - } else { - glDisable(GL_LIGHTING); - glDisable(GL_LIGHT0); - glDisable(GL_AUTO_NORMAL); - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -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(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum 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; - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_RGB | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Evaluator Test") == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/fog.c b/progs/samples/fog.c deleted file mode 100644 index 3f3ffdbcc7a..00000000000 --- a/progs/samples/fog.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -GLenum rgb, doubleBuffer; - -#include "tkmap.c" - -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 void Build_lists(void) -{ - - 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(); -} - -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[] = {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}; - - 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); - if (rgb) { - glFogfv(GL_FOG_COLOR, fog_color); - glClearColor(0.8, 0.8, 0.8, 1.0); - } else { - glFogi(GL_FOG_INDEX, 1<<5); - SetFogRamp(5, 3); - glClearIndex(128); - } - - Build_lists(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45.0, 1.0, 1.0, 200.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key2(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_UP: - rotX -= 5; - break; - case GLUT_KEY_DOWN: - rotX += 5; - break; - case GLUT_KEY_LEFT: - rotY -= 5; - break; - case GLUT_KEY_RIGHT: - rotY += 5; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 'D': - if (rgb) { - fogDensity *= 1.10; - glFogf(GL_FOG_DENSITY, fogDensity); - } - break; - case 'd': - if (rgb) { - fogDensity /= 1.10; - glFogf(GL_FOG_DENSITY, fogDensity); - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glTranslatef(0, 0, zTranslate); - glRotatef(rotY, 0,1,0); - glRotatef(rotX, 1,0,0); - glScalef(1.0, 1.0, 10.0); - - glCallList(cubeList); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static 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; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_DEPTH; - type |= (rgb) ? GLUT_RGB : GLUT_INDEX; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Fog Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/font.c b/progs/samples/font.c deleted file mode 100644 index a0091a65d79..00000000000 --- a/progs/samples/font.c +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define OPENGL_WIDTH 24 -#define OPENGL_HEIGHT 13 - - -char string[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz"; -GLenum rgb, doubleBuffer, windType; -float angleX = 0.0, angleY = 0.0, angleZ = 0.0; -float scaleX = 1.0, scaleY = 1.0, scaleZ = 1.0; -float shiftX = 0.0, shiftY = 0.0, shiftZ = 0.0; - - -#include "tkmap.c" - - -static void DrawBitmapString(void *font, const char *string) -{ - int i; - - for (i = 0; string[i]; i++) - glutBitmapCharacter(font, string[i]); -} - -static void DrawStrokeString(void *font, const char *string) -{ - int i; - - for (i = 0; string[i]; i++) - glutStrokeCharacter(font, string[i]); -} - -static void Init(void) -{ - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearIndex(0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-400.0, 400.0, -200.0, 200.0, -400.0, 400.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key2(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_LEFT: - shiftX -= 20.0; - break; - case GLUT_KEY_RIGHT: - shiftX += 20.0; - break; - case GLUT_KEY_UP: - shiftY += 20.0; - break; - case GLUT_KEY_DOWN: - shiftY -= 20.0; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - - case 'n': - shiftZ += 20.0; - break; - case 'm': - shiftZ -= 20.0; - break; - - case 'q': - scaleX -= 0.1; - if (scaleX < 0.1) { - scaleX = 0.1; - } - break; - case 'w': - scaleX += 0.1; - break; - case 'a': - scaleY -= 0.1; - if (scaleY < 0.1) { - scaleY = 0.1; - } - break; - case 's': - scaleY += 0.1; - break; - case 'z': - scaleZ -= 0.1; - if (scaleZ < 0.1) { - scaleZ = 0.1; - } - break; - case 'x': - scaleZ += 0.1; - break; - - case 'e': - angleX -= 5.0; - if (angleX < 0.0) { - angleX = 360.0 + angleX; - } - break; - case 'r': - angleX += 5.0; - if (angleX > 360.0) { - angleX = angleX - 360.0; - } - break; - case 'd': - angleY -= 5.0; - if (angleY < 0.0) { - angleY = 360.0 + angleY; - } - break; - case 'f': - angleY += 5.0; - if (angleY > 360.0) { - angleY = angleY - 360.0; - } - break; - case 'c': - angleZ -= 5.0; - if (angleZ < 0.0) { - angleZ = 360.0 + angleZ; - } - break; - case 'v': - angleZ += 5.0; - if (angleZ > 360.0) { - angleZ = angleZ - 360.0; - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - - glClear(GL_COLOR_BUFFER_BIT); - - SetColor(COLOR_WHITE); - - glPushMatrix(); - - glTranslatef(shiftX, shiftY, shiftZ); - glRotatef(angleX, 1.0, 0.0, 0.0); - glRotatef(angleY, 0.0, 1.0, 0.0); - glRotatef(angleZ, 0.0, 0.0, 1.0); - glScalef(scaleX, scaleY, scaleZ); - - glPushMatrix(); - glRasterPos2f(-390.5, 0.5); - DrawBitmapString(GLUT_BITMAP_9_BY_15, string); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-390.5, -30.5, 0.0); - DrawStrokeString(GLUT_STROKE_ROMAN, string); - glPopMatrix(); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 800, 400); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Font Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/line.c b/progs/samples/line.c deleted file mode 100644 index 83f70cb3ac4..00000000000 --- a/progs/samples/line.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET 16 - - -GLenum rgb, doubleBuffer, windType; - -GLenum mode1, mode2; -GLint size; -float pntA[3] = { - -160.0, 0.0, 0.0 -}; -float pntB[3] = { - -130.0, 0.0, 0.0 -}; -float pntC[3] = { - -40.0, -50.0, 0.0 -}; -float pntD[3] = { - 30.0, 60.0, 0.0 -}; - - -#include "tkmap.c" - -static void Init(void) -{ - GLint i; - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glLineStipple(1, 0xF0E0); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - - if (!rgb) { - for (i = 0; i < 16; i++) { - glutSetColor(i+CI_OFFSET, i/15.0, i/15.0, 0.0); - } - } - - mode1 = GL_FALSE; - mode2 = GL_FALSE; - size = 1; -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-175, 175, -175, 175); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case '1': - mode1 = !mode1; - break; - case '2': - mode2 = !mode2; - break; - case 'W': - size++; - break; - case 'w': - size--; - if (size < 1) { - size = 1; - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - GLint ci, i; - - glClear(GL_COLOR_BUFFER_BIT); - - glLineWidth(size); - - if (mode1) { - glEnable(GL_LINE_STIPPLE); - } else { - glDisable(GL_LINE_STIPPLE); - } - - if (mode2) { - ci = CI_OFFSET; - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - } else { - ci = COLOR_YELLOW; - glDisable(GL_LINE_SMOOTH); - glDisable(GL_BLEND); - } - - glPushMatrix(); - - glShadeModel( GL_FLAT ); - - for (i = 0; i < 360; i += 5) { - glRotatef(5.0, 0,0,1); - - (rgb) ? glColor3f(1.0, 1.0, 0.0) : glIndexi(ci); - glBegin(GL_LINE_STRIP); - glVertex3fv(pntA); - glVertex3fv(pntB); - glEnd(); - - glPointSize(1); - - SetColor(COLOR_GREEN); - glBegin(GL_POINTS); - glVertex3fv(pntA); - glVertex3fv(pntB); - glEnd(); - } - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static 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; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Line Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/loadppm.c b/progs/samples/loadppm.c deleted file mode 100644 index adae9b491e4..00000000000 --- a/progs/samples/loadppm.c +++ /dev/null @@ -1,74 +0,0 @@ - -typedef struct { - size_t sizeX, sizeY; - GLubyte *data; -} PPMImage; - -static PPMImage *LoadPPM(const char *filename) -{ - char buff[16]; - PPMImage *result; - FILE *fp; - int maxval, w, h; - - fp = fopen(filename, "rb"); - if (!fp) - { - fprintf(stderr, "Unable to open file `%s'\n", filename); - exit(1); - } - - if (!fgets(buff, sizeof(buff), fp)) - { - perror(filename); - exit(1); - } - - if (buff[0] != 'P' || buff[1] != '6') - { - fprintf(stderr, "Invalid image format (must be `P6')\n"); - exit(1); - } - - result = (PPMImage *) malloc(sizeof(PPMImage)); - if (!result) - { - fprintf(stderr, "Unable to allocate memory\n"); - exit(1); - } - - if (fscanf(fp, "%d %d", &w, &h) != 2) - { - fprintf(stderr, "Error loading image `%s'\n", filename); - exit(1); - } - result->sizeX = w; - result->sizeY = h; - - if (fscanf(fp, "%d", &maxval) != 1) - { - fprintf(stderr, "Error loading image `%s'\n", filename); - exit(1); - } - - while (fgetc(fp) != '\n') - ; - - result->data = (GLubyte *) malloc(3 * result->sizeX * result->sizeY); - if (!result) - { - fprintf(stderr, "Unable to allocate memory\n"); - exit(1); - } - - if (fread(result->data, 3 * result->sizeX, result->sizeY, fp) != result->sizeY) - { - fprintf(stderr, "Error loading image `%s'\n", filename); - exit(1); - } - - fclose(fp); - - return result; -} - diff --git a/progs/samples/logo.c b/progs/samples/logo.c deleted file mode 100644 index ae74af685a7..00000000000 --- a/progs/samples/logo.c +++ /dev/null @@ -1,1635 +0,0 @@ - -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define PI 3.141592654 - -#define BLACK 0 -#define GRAY 128 -#define WHITE 255 -#define BL 0x00 -#define WH 0xFF -#define RD 0xA4,0x00,0x00,0xFF -#define WT 0xFF,0xFF,0xFF,0xFF - -#define CHECKIMAGEWIDTH 8 -#define CHECKIMAGEHEIGHT 8 -#define BRICKIMAGEWIDTH 16 -#define BRICKIMAGEHEIGHT 16 - - -GLenum rgb, doubleBuffer; - -#include "tkmap.c" - -float black[3] = {0.0, 0.0, 0.0}; -float white[3] = {1.0, 1.0, 1.0}; -float gray[3] = {0.5, 0.5, 0.5}; -float blue[3] = {0.0, 0.0, 1.0}; -GLint colorIndexes[3] = {0, 200, 255}; - -GLenum polyMode; -GLboolean dithering; -GLboolean shade; -GLboolean doStipple; -GLboolean noDraw = 0; -GLboolean LineSmooth = GL_FALSE; - -double plane[4] = {1.0, 0.0, -1.0, 0.0}; -float xRotation = 30.0, yRotation = 30.0; -float zTranslation = -15.0; - -GLint singleCylinder; -GLint doubleCylinder; -GLint elbow, logo; - -GLubyte checkImage[3*CHECKIMAGEWIDTH*CHECKIMAGEHEIGHT] = { - BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, - WH, WH, BL, BL, BL, WH, WH, WH, WH, WH, WH, BL, BL, BL, WH, WH, - WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, - BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, - WH, WH, BL, BL, BL, WH, WH, WH, WH, WH, WH, BL, BL, BL, WH, WH, - WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, - BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, - WH, WH, BL, BL, BL, WH, WH, WH, WH, WH, WH, BL, BL, BL, WH, WH, - WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, - BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, - WH, WH, BL, BL, BL, WH, WH, WH, WH, WH, WH, BL, BL, BL, WH, WH, - WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, WH, WH, WH, BL, BL, BL, -}; -GLubyte brickImage[4*BRICKIMAGEWIDTH*BRICKIMAGEHEIGHT] = { - RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, - WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, - RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, - RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, - RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, - RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, - WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, - RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, - WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, - RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD -}; - -GLubyte *image = checkImage; -GLint imageHeight = CHECKIMAGEHEIGHT; -GLint imageWidth = CHECKIMAGEWIDTH; - -static float decal[] = { - GL_DECAL, -}; -static float modulate[] = { - GL_MODULATE, -}; -static float repeat[] = { - GL_REPEAT, -}; -static float nearest[] = { - GL_NEAREST, -}; - -GLubyte stipple[4*32] = { - 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, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x0F, 0xF0, 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, -}; - -float tscp[18][2] = { - { - 0.0, 0.0 - }, - { - 1.0, 0.0 - }, - { - 0.0, 0.125 - }, - { - 1.0, 0.125 - }, - { - 0.0, 0.250 - }, - { - 1.0, 0.25 - }, - { - 0.0, 0.375 - }, - { - 1.0, 0.375 - }, - { - 0.0, 0.50 - }, - { - 1.0, 0.50 - }, - { - 0.0, 0.625 - }, - { - 1.0, 0.625 - }, - { - 0.0, 0.75 - }, - { - 1.0, 0.75 - }, - { - 0.0, 0.875 - }, - { - 1.0, 0.875 - }, - { - 0.0, 1.0 - }, - { - 1.0, 1.0 - } -}; -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 - } -}; -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 - } -}; -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 - } - } -}; -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 - }, - { - /* These 3 lines added by BEP */ - 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 - } - } -}; -float tep[7][9][2] = { - { - { - 0, 0.0 - }, - { - 0.125, 0.0 - }, - { - 0.25, 0.0 - }, - { - 0.375, 0.0 - }, - { - 0.5, 0.0 - }, - { - 0.625, 0.0 - }, - { - 0.75, 0.0 - }, - { - 0.875, 0.0 - }, - { - 1.0, 0.0 - } - }, - { - { - 0, 0.16667 - }, - { - 0.125, 0.16667 - }, - { - 0.25, 0.16667 - }, - { - 0.375, 0.16667 - }, - { - 0.5, 0.16667 - }, - { - 0.625, 0.16667 - }, - { - 0.75, 0.16667 - }, - { - 0.875, 0.16667 - }, - { - 1.0, 0.16667 - } - }, - { - { - 0, 0.33333 - }, - { - 0.125, 0.33333 - }, - { - 0.25, 0.33333 - }, - { - 0.375, 0.33333 - }, - { - 0.5, 0.33333 - }, - { - 0.625, 0.33333 - }, - { - 0.75, 0.33333 - }, - { - 0.875, 0.33333 - }, - { - 1.0, 0.33333 - } - }, - { - { - 0, 0.5 - }, - { - 0.125, 0.5 - }, - { - 0.25, 0.5 - }, - { - 0.375, 0.5 - }, - { - 0.5, 0.5 - }, - { - 0.625, 0.5 - }, - { - 0.75, 0.5 - }, - { - 0.875, 0.5 - }, - { - 1.0, 0.5 - } - }, - { - { - 0, 0.6667 - }, - { - 0.125, 0.6667 - }, - { - 0.25, 0.6667 - }, - { - 0.375, 0.6667 - }, - { - 0.5, 0.6667 - }, - { - 0.625, 0.6667 - }, - { - 0.75, 0.6667 - }, - { - 0.875, 0.6667 - }, - { - 1.0, 0.6667 - } - }, - { - { - 0, 0.83333 - }, - { - 0.125, 0.83333 - }, - { - 0.25, 0.83333 - }, - { - 0.375, 0.83333 - }, - { - 0.5, 0.83333 - }, - { - 0.625, 0.83333 - }, - { - 0.75, 0.83333 - }, - { - 0.875, 0.83333 - }, - { - 1.0, 0.83333 - } - }, - { - { - 0, 1.0 - }, - { - 0.125, 1.0 - }, - { - 0.25, 1.0 - }, - { - 0.375, 1.0 - }, - { - 0.5, 1.0 - }, - { - 0.625, 1.0 - }, - { - 0.75, 1.0 - }, - { - 0.875, 1.0 - }, - { - 1.0, 1.0 - } - } -}; - - -static void SetUpAntiAliasedGrayScale(void) -{ - float color; - GLint i, j; - - for (i = 0; i < 16; i++) { - color = (2 * i + 1) / 32.0; - for (j = 0; j < 16; j++) { - glutSetColor(i*16+j, color*j/15.0, color*j/15.0, color*j/15.0); - } - } -} - -static void BendForward(void) -{ - - glTranslatef(0.0, 1.0, 0.0); - glRotatef(90.0, 1, 0, 0); - glTranslatef(0.0, -1.0, 0.0); -} - -static void BendLeft(void) -{ - - glRotatef(-90.0, 0, 0, 1); - glTranslatef(0.0, 1.0, 0.0); - glRotatef(90.0, 1, 0, 0); - glTranslatef(0.0, -1.0, 0.0); -} - -static void BendRight(void) -{ - - glRotatef(90.0, 0, 0, 1); - glTranslatef(0.0, 1.0, 0.0); - glRotatef(90.0, 1, 0, 0); - glTranslatef(0.0, -1.0, 0.0); -} - -static void BuildSingleCylinder(void) -{ - - glNewList(singleCylinder, GL_COMPILE); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(scp[0]); glTexCoord2fv(tscp[0]); glVertex3fv(scp[0]); - glNormal3fv(scp[0]); glTexCoord2fv(tscp[1]); glVertex3fv(scp[1]); - glNormal3fv(scp[2]); glTexCoord2fv(tscp[2]); glVertex3fv(scp[2]); - glNormal3fv(scp[2]); glTexCoord2fv(tscp[3]); glVertex3fv(scp[3]); - glNormal3fv(scp[4]); glTexCoord2fv(tscp[4]); glVertex3fv(scp[4]); - glNormal3fv(scp[4]); glTexCoord2fv(tscp[5]); glVertex3fv(scp[5]); - glNormal3fv(scp[6]); glTexCoord2fv(tscp[6]); glVertex3fv(scp[6]); - glNormal3fv(scp[6]); glTexCoord2fv(tscp[7]); glVertex3fv(scp[7]); - glNormal3fv(scp[8]); glTexCoord2fv(tscp[8]); glVertex3fv(scp[8]); - glNormal3fv(scp[8]); glTexCoord2fv(tscp[9]); glVertex3fv(scp[9]); - glNormal3fv(scp[10]); glTexCoord2fv(tscp[10]); glVertex3fv(scp[10]); - glNormal3fv(scp[10]); glTexCoord2fv(tscp[11]); glVertex3fv(scp[11]); - glNormal3fv(scp[12]); glTexCoord2fv(tscp[12]); glVertex3fv(scp[12]); - glNormal3fv(scp[12]); glTexCoord2fv(tscp[13]); glVertex3fv(scp[13]); - glNormal3fv(scp[14]); glTexCoord2fv(tscp[14]); glVertex3fv(scp[14]); - glNormal3fv(scp[14]); glTexCoord2fv(tscp[15]); glVertex3fv(scp[15]); - glNormal3fv(scp[16]); glTexCoord2fv(tscp[16]); glVertex3fv(scp[16]); - glNormal3fv(scp[16]); glTexCoord2fv(tscp[17]); glVertex3fv(scp[17]); - glEnd(); - - glEndList(); -} - -static void BuildDoubleCylinder(void) -{ - - glNewList(doubleCylinder, GL_COMPILE); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(dcp[0]); glTexCoord2fv(tscp[0]); glVertex3fv(dcp[0]); - glNormal3fv(dcp[0]); glTexCoord2fv(tscp[1]); glVertex3fv(dcp[1]); - glNormal3fv(dcp[2]); glTexCoord2fv(tscp[2]); glVertex3fv(dcp[2]); - glNormal3fv(dcp[2]); glTexCoord2fv(tscp[3]); glVertex3fv(dcp[3]); - glNormal3fv(dcp[4]); glTexCoord2fv(tscp[4]); glVertex3fv(dcp[4]); - glNormal3fv(dcp[4]); glTexCoord2fv(tscp[5]); glVertex3fv(dcp[5]); - glNormal3fv(dcp[6]); glTexCoord2fv(tscp[6]); glVertex3fv(dcp[6]); - glNormal3fv(dcp[6]); glTexCoord2fv(tscp[7]); glVertex3fv(dcp[7]); - glNormal3fv(dcp[8]); glTexCoord2fv(tscp[8]); glVertex3fv(dcp[8]); - glNormal3fv(dcp[8]); glTexCoord2fv(tscp[9]); glVertex3fv(dcp[9]); - glNormal3fv(dcp[10]); glTexCoord2fv(tscp[10]); glVertex3fv(dcp[10]); - glNormal3fv(dcp[10]); glTexCoord2fv(tscp[11]); glVertex3fv(dcp[11]); - glNormal3fv(dcp[12]); glTexCoord2fv(tscp[12]); glVertex3fv(dcp[12]); - glNormal3fv(dcp[12]); glTexCoord2fv(tscp[13]); glVertex3fv(dcp[13]); - glNormal3fv(dcp[14]); glTexCoord2fv(tscp[14]); glVertex3fv(dcp[14]); - glNormal3fv(dcp[14]); glTexCoord2fv(tscp[15]); glVertex3fv(dcp[15]); - glNormal3fv(dcp[16]); glTexCoord2fv(tscp[16]); glVertex3fv(dcp[16]); - glNormal3fv(dcp[16]); glTexCoord2fv(tscp[17]); glVertex3fv(dcp[17]); - glEnd(); - - glEndList(); -} - -static void BuildElbow(void) -{ - - glNewList(elbow, GL_COMPILE); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[0][0]); glTexCoord2fv(tep[0][0]); glVertex3fv(ep[0][0]); - glNormal3fv(en[1][0]); glTexCoord2fv(tep[1][0]); glVertex3fv(ep[1][0]); - glNormal3fv(en[0][1]); glTexCoord2fv(tep[0][1]); glVertex3fv(ep[0][1]); - glNormal3fv(en[1][1]); glTexCoord2fv(tep[1][1]); glVertex3fv(ep[1][1]); - glNormal3fv(en[0][2]); glTexCoord2fv(tep[0][2]); glVertex3fv(ep[0][2]); - glNormal3fv(en[1][2]); glTexCoord2fv(tep[1][2]); glVertex3fv(ep[1][2]); - glNormal3fv(en[0][3]); glTexCoord2fv(tep[0][3]); glVertex3fv(ep[0][3]); - glNormal3fv(en[1][3]); glTexCoord2fv(tep[1][3]); glVertex3fv(ep[1][3]); - glNormal3fv(en[0][4]); glTexCoord2fv(tep[0][4]); glVertex3fv(ep[0][4]); - glNormal3fv(en[1][4]); glTexCoord2fv(tep[1][4]); glVertex3fv(ep[1][4]); - glNormal3fv(en[0][5]); glTexCoord2fv(tep[0][5]); glVertex3fv(ep[0][5]); - glNormal3fv(en[1][5]); glTexCoord2fv(tep[1][5]); glVertex3fv(ep[1][5]); - glNormal3fv(en[0][6]); glTexCoord2fv(tep[0][6]); glVertex3fv(ep[0][6]); - glNormal3fv(en[1][6]); glTexCoord2fv(tep[1][6]); glVertex3fv(ep[1][6]); - glNormal3fv(en[0][7]); glTexCoord2fv(tep[0][7]); glVertex3fv(ep[0][7]); - glNormal3fv(en[1][7]); glTexCoord2fv(tep[1][7]); glVertex3fv(ep[1][7]); - glNormal3fv(en[0][8]); glTexCoord2fv(tep[0][8]); glVertex3fv(ep[0][8]); - glNormal3fv(en[1][8]); glTexCoord2fv(tep[1][8]); glVertex3fv(ep[1][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[1][0]); glTexCoord2fv(tep[1][0]); glVertex3fv(ep[1][0]); - glNormal3fv(en[2][0]); glTexCoord2fv(tep[2][0]); glVertex3fv(ep[2][0]); - glNormal3fv(en[1][1]); glTexCoord2fv(tep[1][1]); glVertex3fv(ep[1][1]); - glNormal3fv(en[2][1]); glTexCoord2fv(tep[2][1]); glVertex3fv(ep[2][1]); - glNormal3fv(en[1][2]); glTexCoord2fv(tep[1][2]); glVertex3fv(ep[1][2]); - glNormal3fv(en[2][2]); glTexCoord2fv(tep[2][2]); glVertex3fv(ep[2][2]); - glNormal3fv(en[1][3]); glTexCoord2fv(tep[1][3]); glVertex3fv(ep[1][3]); - glNormal3fv(en[2][3]); glTexCoord2fv(tep[2][3]); glVertex3fv(ep[2][3]); - glNormal3fv(en[1][4]); glTexCoord2fv(tep[1][4]); glVertex3fv(ep[1][4]); - glNormal3fv(en[2][4]); glTexCoord2fv(tep[2][4]); glVertex3fv(ep[2][4]); - glNormal3fv(en[1][5]); glTexCoord2fv(tep[1][5]); glVertex3fv(ep[1][5]); - glNormal3fv(en[2][5]); glTexCoord2fv(tep[2][5]); glVertex3fv(ep[2][5]); - glNormal3fv(en[1][6]); glTexCoord2fv(tep[1][6]); glVertex3fv(ep[1][6]); - glNormal3fv(en[2][6]); glTexCoord2fv(tep[2][6]); glVertex3fv(ep[2][6]); - glNormal3fv(en[1][7]); glTexCoord2fv(tep[1][7]); glVertex3fv(ep[1][7]); - glNormal3fv(en[2][7]); glTexCoord2fv(tep[2][7]); glVertex3fv(ep[2][7]); - glNormal3fv(en[1][8]); glTexCoord2fv(tep[1][8]); glVertex3fv(ep[1][8]); - glNormal3fv(en[2][8]); glTexCoord2fv(tep[2][8]); glVertex3fv(ep[2][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[2][0]); glTexCoord2fv(tep[2][0]); glVertex3fv(ep[2][0]); - glNormal3fv(en[3][0]); glTexCoord2fv(tep[3][0]); glVertex3fv(ep[3][0]); - glNormal3fv(en[2][1]); glTexCoord2fv(tep[2][1]); glVertex3fv(ep[2][1]); - glNormal3fv(en[3][1]); glTexCoord2fv(tep[3][1]); glVertex3fv(ep[3][1]); - glNormal3fv(en[2][2]); glTexCoord2fv(tep[2][2]); glVertex3fv(ep[2][2]); - glNormal3fv(en[3][2]); glTexCoord2fv(tep[3][2]); glVertex3fv(ep[3][2]); - glNormal3fv(en[2][3]); glTexCoord2fv(tep[2][3]); glVertex3fv(ep[2][3]); - glNormal3fv(en[3][3]); glTexCoord2fv(tep[3][3]); glVertex3fv(ep[3][3]); - glNormal3fv(en[2][4]); glTexCoord2fv(tep[2][4]); glVertex3fv(ep[2][4]); - glNormal3fv(en[3][4]); glTexCoord2fv(tep[3][4]); glVertex3fv(ep[3][4]); - glNormal3fv(en[2][5]); glTexCoord2fv(tep[2][5]); glVertex3fv(ep[2][5]); - glNormal3fv(en[3][5]); glTexCoord2fv(tep[3][5]); glVertex3fv(ep[3][5]); - glNormal3fv(en[2][6]); glTexCoord2fv(tep[2][6]); glVertex3fv(ep[2][6]); - glNormal3fv(en[3][6]); glTexCoord2fv(tep[3][6]); glVertex3fv(ep[3][6]); - glNormal3fv(en[2][7]); glTexCoord2fv(tep[2][7]); glVertex3fv(ep[2][7]); - glNormal3fv(en[3][7]); glTexCoord2fv(tep[3][7]); glVertex3fv(ep[3][7]); - glNormal3fv(en[2][8]); glTexCoord2fv(tep[2][8]); glVertex3fv(ep[2][8]); - glNormal3fv(en[3][8]); glTexCoord2fv(tep[3][8]); glVertex3fv(ep[3][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[3][0]); glTexCoord2fv(tep[3][0]); glVertex3fv(ep[3][0]); - glNormal3fv(en[4][0]); glTexCoord2fv(tep[4][0]); glVertex3fv(ep[4][0]); - glNormal3fv(en[3][1]); glTexCoord2fv(tep[3][1]); glVertex3fv(ep[3][1]); - glNormal3fv(en[4][1]); glTexCoord2fv(tep[4][1]); glVertex3fv(ep[4][1]); - glNormal3fv(en[3][2]); glTexCoord2fv(tep[3][2]); glVertex3fv(ep[3][2]); - glNormal3fv(en[4][2]); glTexCoord2fv(tep[4][2]); glVertex3fv(ep[4][2]); - glNormal3fv(en[3][3]); glTexCoord2fv(tep[3][3]); glVertex3fv(ep[3][3]); - glNormal3fv(en[4][3]); glTexCoord2fv(tep[4][3]); glVertex3fv(ep[4][3]); - glNormal3fv(en[3][4]); glTexCoord2fv(tep[3][4]); glVertex3fv(ep[3][4]); - glNormal3fv(en[4][4]); glTexCoord2fv(tep[4][4]); glVertex3fv(ep[4][4]); - glNormal3fv(en[3][5]); glTexCoord2fv(tep[3][5]); glVertex3fv(ep[3][5]); - glNormal3fv(en[4][5]); glTexCoord2fv(tep[4][5]); glVertex3fv(ep[4][5]); - glNormal3fv(en[3][6]); glTexCoord2fv(tep[3][6]); glVertex3fv(ep[3][6]); - glNormal3fv(en[4][6]); glTexCoord2fv(tep[4][6]); glVertex3fv(ep[4][6]); - glNormal3fv(en[3][7]); glTexCoord2fv(tep[3][7]); glVertex3fv(ep[3][7]); - glNormal3fv(en[4][7]); glTexCoord2fv(tep[4][7]); glVertex3fv(ep[4][7]); - glNormal3fv(en[3][8]); glTexCoord2fv(tep[3][8]); glVertex3fv(ep[3][8]); - glNormal3fv(en[4][8]); glTexCoord2fv(tep[4][8]); glVertex3fv(ep[4][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[4][0]); glTexCoord2fv(tep[4][0]); glVertex3fv(ep[4][0]); - glNormal3fv(en[5][0]); glTexCoord2fv(tep[5][0]); glVertex3fv(ep[5][0]); - glNormal3fv(en[4][1]); glTexCoord2fv(tep[4][1]); glVertex3fv(ep[4][1]); - glNormal3fv(en[5][1]); glTexCoord2fv(tep[5][1]); glVertex3fv(ep[5][1]); - glNormal3fv(en[4][2]); glTexCoord2fv(tep[4][2]); glVertex3fv(ep[4][2]); - glNormal3fv(en[5][2]); glTexCoord2fv(tep[5][2]); glVertex3fv(ep[5][2]); - glNormal3fv(en[4][3]); glTexCoord2fv(tep[4][3]); glVertex3fv(ep[4][3]); - glNormal3fv(en[5][3]); glTexCoord2fv(tep[5][3]); glVertex3fv(ep[5][3]); - glNormal3fv(en[4][4]); glTexCoord2fv(tep[4][4]); glVertex3fv(ep[4][4]); - glNormal3fv(en[5][4]); glTexCoord2fv(tep[5][4]); glVertex3fv(ep[5][4]); - glNormal3fv(en[4][5]); glTexCoord2fv(tep[4][5]); glVertex3fv(ep[4][5]); - glNormal3fv(en[5][5]); glTexCoord2fv(tep[5][5]); glVertex3fv(ep[5][5]); - glNormal3fv(en[4][6]); glTexCoord2fv(tep[4][6]); glVertex3fv(ep[4][6]); - glNormal3fv(en[5][6]); glTexCoord2fv(tep[5][6]); glVertex3fv(ep[5][6]); - glNormal3fv(en[4][7]); glTexCoord2fv(tep[4][7]); glVertex3fv(ep[4][7]); - glNormal3fv(en[5][7]); glTexCoord2fv(tep[5][7]); glVertex3fv(ep[5][7]); - glNormal3fv(en[4][8]); glTexCoord2fv(tep[4][8]); glVertex3fv(ep[4][8]); - glNormal3fv(en[5][8]); glTexCoord2fv(tep[5][8]); glVertex3fv(ep[5][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[5][0]); glTexCoord2fv(tep[5][0]); glVertex3fv(ep[5][0]); - glNormal3fv(en[6][0]); glTexCoord2fv(tep[6][0]); glVertex3fv(ep[6][0]); - glNormal3fv(en[5][1]); glTexCoord2fv(tep[5][1]); glVertex3fv(ep[5][1]); - glNormal3fv(en[6][1]); glTexCoord2fv(tep[6][1]); glVertex3fv(ep[6][1]); - glNormal3fv(en[5][2]); glTexCoord2fv(tep[5][2]); glVertex3fv(ep[5][2]); - glNormal3fv(en[6][2]); glTexCoord2fv(tep[6][2]); glVertex3fv(ep[6][2]); - glNormal3fv(en[5][3]); glTexCoord2fv(tep[5][3]); glVertex3fv(ep[5][3]); - glNormal3fv(en[6][3]); glTexCoord2fv(tep[6][3]); glVertex3fv(ep[6][3]); - glNormal3fv(en[5][4]); glTexCoord2fv(tep[5][4]); glVertex3fv(ep[5][4]); - glNormal3fv(en[6][4]); glTexCoord2fv(tep[6][4]); glVertex3fv(ep[6][4]); - glNormal3fv(en[5][5]); glTexCoord2fv(tep[5][5]); glVertex3fv(ep[5][5]); - glNormal3fv(en[6][5]); glTexCoord2fv(tep[6][5]); glVertex3fv(ep[6][5]); - glNormal3fv(en[5][6]); glTexCoord2fv(tep[5][6]); glVertex3fv(ep[5][6]); - glNormal3fv(en[6][6]); glTexCoord2fv(tep[6][6]); glVertex3fv(ep[6][6]); - glNormal3fv(en[5][7]); glTexCoord2fv(tep[5][7]); glVertex3fv(ep[5][7]); - glNormal3fv(en[6][7]); glTexCoord2fv(tep[6][7]); glVertex3fv(ep[6][7]); - glNormal3fv(en[5][8]); glTexCoord2fv(tep[5][8]); glVertex3fv(ep[5][8]); - glNormal3fv(en[6][8]); glTexCoord2fv(tep[6][8]); glVertex3fv(ep[6][8]); - glEnd(); - - glEndList(); -} - -static void BuildLogo(void) -{ - - glNewList(logo, GL_COMPILE); - - glTranslatef(5.5, -3.5, 4.5); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -5.0); - glCallList(singleCylinder); - BendRight(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -5.0); - glCallList(singleCylinder); - BendLeft(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -5.0); - glCallList(singleCylinder); - BendRight(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -5.0); - glCallList(singleCylinder); - BendLeft(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -5.0); - glCallList(singleCylinder); - BendRight(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -7.0); - glCallList(doubleCylinder); - BendForward(); - glCallList(elbow); - glTranslatef(0.0, 0.0, -5.0); - glCallList(singleCylinder); - BendLeft(); - glCallList(elbow); - - glEndList(); -} - -static void BuildLists(void) -{ - - singleCylinder = glGenLists(1); - doubleCylinder = glGenLists(1); - elbow = glGenLists(1); - logo = glGenLists(1); - - BuildSingleCylinder(); - BuildDoubleCylinder(); - BuildElbow(); - BuildLogo(); -} - -static void Init(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[] = {30.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 back_mat_shininess[] = {50.0}; - static float back_mat_specular[] = {0.5, 0.5, 0.2, 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}; - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glFrontFace(GL_CW); - - glEnable(GL_DEPTH_TEST); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - 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_CLIP_PLANE0); - - if (rgb) { - 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, nearest); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nearest); - glTexImage2D(GL_TEXTURE_2D, 0, 3, CHECKIMAGEWIDTH, CHECKIMAGEHEIGHT, 0, - GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *)checkImage); - glEnable(GL_TEXTURE_2D); - - glCullFace(GL_BACK); - glEnable(GL_CULL_FACE); - } else { - SetGreyRamp(); - /* commented out by BrianP because it's the wrong way to handle a 4-bit visual! - if (doubleBuffer) { - colorIndexes[1] = 10; - colorIndexes[2] = 15; - } - */ - glMaterialiv(GL_FRONT_AND_BACK, GL_COLOR_INDEXES, colorIndexes); - } - - BuildLists(); - - dithering = GL_TRUE; - shade = GL_TRUE; - doStipple = GL_FALSE; - polyMode = GL_BACK; -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90, 1.0, 1.0, 200.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key2(int key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_LEFT: - yRotation += 0.5; - break; - case GLUT_KEY_RIGHT: - yRotation -= 0.5; - break; - case GLUT_KEY_UP: - plane[3] += 2.0; - break; - case GLUT_KEY_DOWN: - plane[3] -= 2.0; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(1); - - case 'Z': - zTranslation -= 1.0; - break; - case 'z': - zTranslation += 1.0; - break; - - case '1': - glPolygonMode(polyMode, GL_POINT); - break; - case '2': - glPolygonMode(polyMode, GL_LINE); - break; - case '3': - glPolygonMode(polyMode, GL_FILL); - break; - case 'p': - switch (polyMode) { - case GL_BACK: - polyMode = GL_FRONT; - printf("PolygonMode GL_FRONT\n"); - break; - case GL_FRONT: - polyMode = GL_FRONT_AND_BACK; - printf("PolygonMode GL_FRONT_AND_BACK\n"); - break; - case GL_FRONT_AND_BACK: - polyMode = GL_BACK; - printf("PolygonMode GL_BACK\n"); - break; - default: - break; - } - break; - - case '4': - glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); - break; - case '5': - glEnable(GL_POLYGON_SMOOTH); - if (rgb) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glEnable(GL_BLEND); - glDisable(GL_DEPTH_TEST); - } else { - SetUpAntiAliasedGrayScale(); - } - break; - case '6': - glDisable(GL_POLYGON_SMOOTH); - if (rgb) { - glBlendFunc(GL_ONE, GL_ZERO); - glDisable(GL_BLEND); - glEnable(GL_DEPTH_TEST); - } else { - SetGreyRamp(); - } - break; - - case '8': - dithering = !dithering; - (dithering) ? glEnable(GL_DITHER) : glDisable(GL_DITHER); - break; - - case '9': - doStipple = !doStipple; - if (doStipple) { - glPolygonStipple(stipple); - glEnable(GL_POLYGON_STIPPLE); - } else { - glDisable(GL_POLYGON_STIPPLE); - } - break; - - case '0': - shade = !shade; - (shade) ? glShadeModel(GL_SMOOTH) : glShadeModel(GL_FLAT); - break; - - case 'q': - glDisable(GL_CULL_FACE); - printf("disable culling\n"); - break; - case 'w': - glEnable(GL_CULL_FACE); - glCullFace(GL_FRONT); - printf("enable front face culling\n"); - break; - case 'e': - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - printf("enable back face culling\n"); - break; - - case 'r': - glFrontFace(GL_CW); - break; - case 't': - glFrontFace(GL_CCW); - break; - case 'y': - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_UNPACK_LSB_FIRST, 0); - glPolygonStipple(stipple); - break; - case 'u': - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_UNPACK_LSB_FIRST, 1); - glPolygonStipple(stipple); - break; - - case 'a': - glEnable(GL_TEXTURE_2D); - 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, nearest); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nearest); - glTexImage2D(GL_TEXTURE_2D, 0, 4, BRICKIMAGEWIDTH, - BRICKIMAGEHEIGHT, 0, GL_RGBA, GL_UNSIGNED_BYTE, - (GLvoid *)brickImage); - break; - case 's': - glEnable(GL_TEXTURE_2D); - 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, nearest); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nearest); - glTexImage2D(GL_TEXTURE_2D, 0, 3, CHECKIMAGEWIDTH, - CHECKIMAGEHEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, - (GLvoid *)checkImage); - break; - case 'd': - glDisable(GL_TEXTURE_2D); - break; - - case 'f': - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, decal); - break; - case 'g': - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, modulate); - break; - - case 'n': - /* added by BrianP */ - noDraw = !noDraw; - if (noDraw) { - glDrawBuffer( GL_NONE ); - } - else { - if (doubleBuffer) { - glDrawBuffer( GL_BACK ); - } - else { - glDrawBuffer( GL_FRONT ); - } - } - break; - - case 'l': - /* Line Smooth - added by BrianP */ - LineSmooth = !LineSmooth; - if (LineSmooth) { - glEnable(GL_LINE_SMOOTH); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - } - else { - glDisable(GL_LINE_SMOOTH); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDisable(GL_BLEND); - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glTranslatef(0, 0, zTranslation); - glRotatef(30.0, 1, 0, 0); - glRotatef(yRotation, 0, 1, 0); - glClipPlane(GL_CLIP_PLANE0, plane); - glCallList(logo); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - unsigned int type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_DEPTH; - type |= (rgb) ? GLUT_RGB : GLUT_INDEX; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Logo Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/nurb.c b/progs/samples/nurb.c deleted file mode 100644 index dc8991295e8..00000000000 --- a/progs/samples/nurb.c +++ /dev/null @@ -1,357 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glut.h> - - -#ifndef CALLBACK -#define CALLBACK -#endif - - -#define INREAL float - -#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 SQRT_TWO 1.41421356237309504880 - - -typedef INREAL Point[4]; - - -GLenum doubleBuffer; - -GLenum expectedError; -GLint rotX = 40, rotY = 40; -INREAL 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 -}; -INREAL tknots[T_NUMKNOTS] = { - 1.0, 1.0, 1.0, 2.0, 2.0, 2.0 -}; -Point ctlpoints[S_NUMPOINTS][T_NUMPOINTS] = { - { - { - 4.0, 2.0, 2.0, 1.0 - }, - { - 4.0, 1.6, 2.5, 1.0 - }, - { - 4.0, 2.0, 3.0, 1.0 - } - }, - { - { - 5.0, 4.0, 2.0, 1.0 - }, - { - 5.0, 4.0, 2.5, 1.0 - }, - { - 5.0, 4.0, 3.0, 1.0 - } - }, - { - { - 6.0, 5.0, 2.0, 1.0 - }, - { - 6.0, 5.0, 2.5, 1.0 - }, - { - 6.0, 5.0, 3.0, 1.0 - } - }, - { - { - SQRT_TWO*6.0, SQRT_TWO*6.0, SQRT_TWO*2.0, SQRT_TWO - }, - { - SQRT_TWO*6.0, SQRT_TWO*6.0, SQRT_TWO*2.5, SQRT_TWO - }, - { - SQRT_TWO*6.0, SQRT_TWO*6.0, SQRT_TWO*3.0, SQRT_TWO - } - }, - { - { - 5.2, 6.7, 2.0, 1.0 - }, - { - 5.2, 6.7, 2.5, 1.0 - }, - { - 5.2, 6.7, 3.0, 1.0 - } - }, - { - { - SQRT_TWO*4.0, SQRT_TWO*6.0, SQRT_TWO*2.0, SQRT_TWO - }, - { - SQRT_TWO*4.0, SQRT_TWO*6.0, SQRT_TWO*2.5, SQRT_TWO - }, - { - SQRT_TWO*4.0, SQRT_TWO*6.0, SQRT_TWO*3.0, SQRT_TWO - } - }, - { - { - 4.0, 5.2, 2.0, 1.0 - }, - { - 4.0, 4.6, 2.5, 1.0 - }, - { - 4.0, 5.2, 3.0, 1.0 - } - }, - { - { - SQRT_TWO*4.0, SQRT_TWO*6.0, SQRT_TWO*2.0, SQRT_TWO - }, - { - SQRT_TWO*4.0, SQRT_TWO*6.0, SQRT_TWO*2.5, SQRT_TWO - }, - { - SQRT_TWO*4.0, SQRT_TWO*6.0, SQRT_TWO*3.0, SQRT_TWO - } - }, - { - { - 2.8, 6.7, 2.0, 1.0 - }, - { - 2.8, 6.7, 2.5, 1.0 - }, - { - 2.8, 6.7, 3.0, 1.0 - } - }, - { - { - SQRT_TWO*2.0, SQRT_TWO*6.0, SQRT_TWO*2.0, SQRT_TWO - }, - { - SQRT_TWO*2.0, SQRT_TWO*6.0, SQRT_TWO*2.5, SQRT_TWO - }, - { - SQRT_TWO*2.0, SQRT_TWO*6.0, SQRT_TWO*3.0, SQRT_TWO - } - }, - { - { - 2.0, 5.0, 2.0, 1.0 - }, - { - 2.0, 5.0, 2.5, 1.0 - }, - { - 2.0, 5.0, 3.0, 1.0 - } - }, - { - { - 3.0, 4.0, 2.0, 1.0 - }, - { - 3.0, 4.0, 2.5, 1.0 - }, - { - 3.0, 4.0, 3.0, 1.0 - } - }, - { - { - 4.0, 2.0, 2.0, 1.0 - }, - { - 4.0, 1.6, 2.5, 1.0 - }, - { - 4.0, 2.0, 3.0, 1.0 - } - } -}; -GLUnurbsObj *theNurbs; - - -static void CALLBACK ErrorCallback(GLenum which) -{ - - if (which != expectedError) { - fprintf(stderr, "Unexpected error occured (%d):\n", which); - fprintf(stderr, " %s\n", (char *) gluErrorString(which)); - } -} - -typedef void (GLAPIENTRY *callback_t)(); - -static void Init(void) -{ - - theNurbs = gluNewNurbsRenderer(); - gluNurbsCallback(theNurbs, GLU_ERROR, (callback_t) ErrorCallback); - - gluNurbsProperty(theNurbs, GLU_SAMPLING_TOLERANCE, 15.0); - gluNurbsProperty(theNurbs, GLU_DISPLAY_MODE, GLU_OUTLINE_PATCH); - - expectedError = GLU_INVALID_ENUM; - gluNurbsProperty(theNurbs, ~0, 15.0); - expectedError = GLU_NURBS_ERROR13; - gluEndSurface(theNurbs); - expectedError = 0; - - glColor3f(1.0, 1.0, 1.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-2.0, 2.0, -2.0, 2.0, 0.8, 10.0); - gluLookAt(7.0, 4.5, 4.0, 4.5, 4.5, 2.5, 6.0, -3.0, 2.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key2(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_DOWN: - rotX -= 5; - break; - case GLUT_KEY_UP: - rotX += 5; - break; - case GLUT_KEY_LEFT: - rotY -= 5; - break; - case GLUT_KEY_RIGHT: - rotY += 5; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - } -} - -static void Draw(void) -{ - - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - - glTranslatef(4.0, 4.5, 2.5); - glRotatef(rotY, 1, 0, 0); - glRotatef(rotX, 0, 1, 0); - glTranslatef(-4.0, -4.5, -2.5); - - gluBeginSurface(theNurbs); - gluNurbsSurface(theNurbs, S_NUMKNOTS, sknots, T_NUMKNOTS, tknots, - 4*T_NUMPOINTS, 4, &ctlpoints[0][0][0], S_ORDER, - T_ORDER, GL_MAP2_VERTEX_4); - gluEndSurface(theNurbs); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum 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; - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("NURBS Test") == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/oglinfo.c b/progs/samples/oglinfo.c deleted file mode 100644 index 4fe51efb3cb..00000000000 --- a/progs/samples/oglinfo.c +++ /dev/null @@ -1,218 +0,0 @@ -/* oglinfo.c */ - -/* This demo modified by BrianP to accomodate Mesa and test - * the GLX 1.1 functions. - */ - - - -#include <GL/gl.h> -#include <GL/glx.h> -#include <GL/glu.h> -#include <stdio.h> -#include <string.h> - -int visual_request0[] = { None }; /* don't need much of a visual */ -int visual_request1[] = { GLX_RGBA, None }; /* in case CI failed */ - -int main(int argc, char **argv) -{ - char *display_name = NULL; - char *string; - Display *dpy; - int screen_num; - int major, minor; - XVisualInfo *vis; - GLXContext ctx; - Window root, win; - Colormap cmap; - XSetWindowAttributes swa; - int dontcare; - - /* parse arguments */ - if(argc > 1) { - if(!strcmp(argv[1],"-display")) - display_name = argv[2]; - else { - fprintf(stderr, "Usage: %s [-display <display>]\n",argv[0]); - return 0; - } - } - - /* get display */ - if (!(dpy = XOpenDisplay(display_name))) { - fprintf(stderr,"Error: XOpenDisplay() failed.\n"); - return 1; - } - - /* does the server know about OpenGL & GLX? */ -#ifndef MESA - if(!XQueryExtension(dpy, "GLX", &dontcare, &dontcare, &dontcare)) { - fprintf(stderr,"This system doesn't appear to support OpenGL\n"); - return 1; - } -#else - (void) dontcare; -#endif - - /* find the glx version */ - if(glXQueryVersion(dpy, &major, &minor)) - printf("GLX Version: %d.%d\n", major, minor); - else { - fprintf(stderr, "Error: glXQueryVersion() failed.\n"); - return 1; - } - - /* get screen number */ - screen_num = DefaultScreen(dpy); - -/* This #ifdef isn't redundant. It keeps the build from breaking -** if you are building on a machine that has an old (1.0) version -** of glx. -** -** This program could still be *run* on a machine that has an old -** version of glx, even if it was *compiled* on a version that has -** a new version. -** -** If compiled on a system with an old version of glx, then it will -** never recognize glx extensions, since that code would have been -** #ifdef'ed out. -*/ -#ifdef GLX_VERSION_1_1 - - /* - ** This test guarantees that glx, on the display you are inquiring, - ** suppports glXQueryExtensionsString(). - */ - if(minor > 0 || major > 1) - string = (char *) glXQueryExtensionsString(dpy, screen_num); - else - string = ""; - - if(string) - printf("GLX Extensions (client & server): %s\n", - string); - else { - fprintf(stderr, "Error: glXQueryExtensionsString() failed.\n"); - return 1; - } - - if (minor>0 || major>1) { - printf("glXGetClientString(GLX_VENDOR): %s\n", glXGetClientString(dpy,GLX_VENDOR)); - printf("glXGetClientString(GLX_VERSION): %s\n", glXGetClientString(dpy,GLX_VERSION)); - printf("glXGetClientString(GLX_EXTENSIONS): %s\n", glXGetClientString(dpy,GLX_EXTENSIONS)); - printf("glXQueryServerString(GLX_VENDOR): %s\n", glXQueryServerString(dpy,screen_num,GLX_VENDOR)); - printf("glXQueryServerString(GLX_VERSION): %s\n", glXQueryServerString(dpy,screen_num,GLX_VERSION)); - printf("glXQueryServerString(GLX_EXTENSIONS): %s\n", glXQueryServerString(dpy,screen_num,GLX_EXTENSIONS)); - } - - -#endif - - /* get any valid OpenGL visual */ - if (!(vis = glXChooseVisual(dpy, screen_num, visual_request0))) { - if (!(vis = glXChooseVisual(dpy, screen_num, visual_request1))) { - fprintf(stderr,"Error: glXChooseVisual() failed.\n"); - return 1; - } - } - - /* get context */ - ctx = glXCreateContext(dpy,vis,0,GL_TRUE); - - /* root window */ - root = RootWindow(dpy,vis->screen); - - /* get RGBA colormap */ - cmap = XCreateColormap(dpy, root, vis->visual, AllocNone); - - /* get window */ - swa.colormap = cmap; - swa.border_pixel = 0; - swa.event_mask = StructureNotifyMask; - win = XCreateWindow(dpy, root, 0, 0, 1, 1, 0, vis->depth, - InputOutput,vis->visual, - CWBorderPixel|CWColormap|CWEventMask, - &swa); - - glXMakeCurrent(dpy,win,ctx); - - string = (char *) glGetString(GL_VERSION); - if(string) -#ifdef MESA - printf("Mesa Version: %s\n", string); -#else - printf("OpenGL Version: %s\n", string); -#endif - else { - fprintf(stderr, "Error: glGetString(GL_VERSION) failed.\n"); - return 1; - } - - string = (char *) glGetString(GL_EXTENSIONS); - - if(string) -#ifdef MESA - printf("Mesa Extensions: %s\n", string); -#else - printf("OpenGL Extensions: %s\n", string); -#endif - else { - fprintf(stderr, "Error: glGetString(GL_EXTENSIONS) failed.\n"); - return 1; - } - - string = (char *) glGetString(GL_RENDERER); - - if(string) -#ifdef MESA - printf("Mesa Renderer: %s\n", string); -#else - printf("OpenGL renderer: %s\n", string); -#endif - else { - fprintf(stderr, "Error: glGetString(GL_RENDERER) failed.\n"); - return 1; - } - -/* -** This #ifdef prevents a build failure if you compile on an a -** machine with an old GLU library. -** -** If you build on a pre GLU 1.1 machine, you will never be able -** to get glu info, even if you run on a GLU 1.1 or latter machine, -** since the code has been #ifdef'ed out. -*/ -#ifdef GLU_VERSION_1_1 - - /* - ** If the glx version is 1.1 or latter, gluGetString() is guaranteed - ** to exist. - */ - if(minor > 0 || major > 1) - string = (char *) gluGetString(GLU_VERSION); - else - string = "1.0"; - - if(string) - printf("GLU Version: %s\n", string); - else { - fprintf(stderr, "Error: gluGetString(GLU_VERSION) failed.\n"); - return 1; - } - - if(minor > 0 || major > 1) - string = (char *) gluGetString(GLU_EXTENSIONS); - else - string = ""; - - if(string) - printf("GLU Extensions: %s\n", string); - else { - fprintf(stderr, "Error: gluGetString(GLU_EXTENSIONS) failed.\n"); - return 1; - } - -#endif - return 0; -} diff --git a/progs/samples/olympic.c b/progs/samples/olympic.c deleted file mode 100644 index 209a8c141b2..00000000000 --- a/progs/samples/olympic.c +++ /dev/null @@ -1,389 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -/* - * Nov 20, 1995 use stdlib's rand()/srand() instead of random()/srand48(), etc. - */ - -/* - * Modified by Li Wei([email protected]) to be able to run in Windows - * 6/13 - * - * Modified by Brian Paul to compile with Windows OR Unix. 7/23/97 - */ - - -#define _HPUX_SOURCE - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glut.h> - -#ifndef RAND_MAX -# define RAND_MAX 32767 -#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 - - -GLenum rgb, doubleBuffer; - -#include "tkmap.c" - -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; - - -static 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 = 3.14159265358979323846; - 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(); - } -} - -static float Clamp(int iters_left, float t) -{ - if (iters_left < 3) { - return 0.0; - } - return (iters_left-2)*t/iters_left; -} - -static void DrawScene(void) -{ - int i, j; - GLboolean goIdle; - static double t0 = -1.; - double t, dt; - t = glutGet(GLUT_ELAPSED_TIME) / 1000.; - if (t0 < 0.) - t0 = t; - dt = t - t0; - - if (dt < 1./30.) - return; - - t0 = t; - - goIdle = GL_TRUE; - 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]--; - goIdle = GL_FALSE; - } - } - if (goIdle) { - glutIdleFunc(NULL); - } - - 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(); - - glFlush(); - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static float MyRand(void) -{ - return 10.0 * ( (float) rand() / (float) RAND_MAX - 0.5 ); -} - -#if !defined(GLUTCALLBACK) -#define GLUTCALLBACK -#endif - -static void GLUTCALLBACK glut_post_redisplay_p(void) -{ - glutPostRedisplay(); -} - -static 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); - } - glutIdleFunc(glut_post_redisplay_p); -} - -static void Init(void) -{ - float base, height; - float aspect, x, y; - 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}; - - srand( (unsigned int) glutGet(GLUT_ELAPSED_TIME) ); - - 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] = COLOR_BLUE; - mapped_colors[REDRING] = COLOR_RED; - mapped_colors[GREENRING] = COLOR_GREEN; - mapped_colors[YELLOWRING] = COLOR_YELLOW; - mapped_colors[BLACKRING] = COLOR_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; - - base = 2.0; - height = 2.0; - theTorus = glGenLists(1); - glNewList(theTorus, GL_COMPILE); - FillTorus(0.1, 8, 1.0, 25); - glEndList(); - - x = (float)XSIZE; - y = (float)YSIZE; - aspect = x / y; - 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); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, width, height); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 32: - ReInit(); - break; - } -} - -static 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; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 400, 300); - - type = GLUT_DEPTH; - type |= (rgb) ? GLUT_RGB : GLUT_INDEX; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Olympic") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(DrawScene); - glutIdleFunc(glut_post_redisplay_p); - - glutMainLoop(); - return 0; -} diff --git a/progs/samples/overlay.c b/progs/samples/overlay.c deleted file mode 100644 index 6087cef2815..00000000000 --- a/progs/samples/overlay.c +++ /dev/null @@ -1,378 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <math.h> -#include <time.h> -#include <GL/glut.h> - - -#ifndef PI -#define PI 3.141592657 -#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, windH; - -GLenum flag = NORMAL, overlayInit = GL_FALSE; -GLint starCount = MAXSTARS / 2; -float speed = 1.0; -GLint nitro = 0; -starRec stars[MAXSTARS]; -float sinTable[MAXANGLES]; - - -static float Sin(float angle) -{ - - return (sinTable[(GLint)angle]); -} - -static float Cos(float angle) -{ - - return (sinTable[((GLint)angle+(MAXANGLES/4))%MAXANGLES]); -} - -static 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); - 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; - } -} - -static 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; -} - -static 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; - } - } -} - -static GLenum StarPoint(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(); - } - return GL_TRUE; - } else { - return GL_FALSE; - } -} - -static 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)) { - if (StarPoint(n) == GL_FALSE) { - NewStar(n, MAXPOS); - } - } else { - NewStar(n, MAXPOS); - } - } -} - -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 += PI / (MAXANGLES / 2.0); - } - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glDisable(GL_DITHER); -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; - - glutUseLayer(GLUT_OVERLAY); - - glViewport(0, 0, windW, windH); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-0.5, windW+0.5, -0.5, windH+0.5); - glMatrixMode(GL_MODELVIEW); - overlayInit = GL_FALSE; - - glutUseLayer(GLUT_NORMAL); - - glViewport(0, 0, windW, windH); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-0.5, windW+0.5, -0.5, windH+0.5); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 32: - flag = (flag == NORMAL) ? WEIRD : NORMAL; - break; - case 't': - nitro = 1; - break; - default: - return; - } -} - -static void Idle(void) -{ - - if (overlayInit == GL_FALSE) { - glutUseLayer(GLUT_OVERLAY); - glClear(GL_COLOR_BUFFER_BIT); -/* glColor3f(1.0, 0.0, 0.0);*/ - - glIndexf( 2.0 ); - glBegin(GL_POLYGON); - glVertex2i(windW/4-10, windH/4-10); - glVertex2i(windW/2-10, windH/4-10); - glVertex2i(windW/2-10, windH/2-10); - glVertex2i(windW/4-10, windH/2-10); - glEnd(); - - glIndexf( 0.0 ); - glBegin(GL_POLYGON); - glVertex2i(windW/4, windH/4); - glVertex2i(windW/2, windH/4); - glVertex2i(windW/2, windH/2); - glVertex2i(windW/4, windH/2); - glEnd(); - - glIndexf( 1.0 ); - glBegin(GL_POLYGON); - glVertex2i(windW/4+10, windH/4+10); - glVertex2i(windW/2+10, windH/4+10); - glVertex2i(windW/2+10, windH/2+10); - glVertex2i(windW/4+10, windH/2+10); - glEnd(); - - glutUseLayer(GLUT_NORMAL); - overlayInit = GL_TRUE; - } - - MoveStars(); - ShowStars(); - 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; - } - } - - glFlush(); - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum 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; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (!glutLayerGet(GLUT_OVERLAY_POSSIBLE)) - { - fprintf(stderr, "Overlay not available\n"); - return(1); - } - - if (Args(argc, argv) == GL_FALSE) { - return(1); - } - - windW = 300; - windH = 300; - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Overlay Test") == GL_FALSE) { - return(1); - } - - glutEstablishOverlay(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutIdleFunc(Idle); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/point.c b/progs/samples/point.c deleted file mode 100644 index 4cb6ad7d517..00000000000 --- a/progs/samples/point.c +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_RED COLOR_RED -#define CI_ANTI_ALIAS_GREEN 16 -#define CI_ANTI_ALIAS_YELLOW 32 -#define CI_ANTI_ALIAS_RED 48 - - -GLenum rgb, doubleBuffer, windType; -GLint windW, windH; - -#include "tkmap.c" - -GLenum mode; -GLint size; -float point[3] = { - 1.0, 1.0, 0.0 -}; - - -static void Init(void) -{ - GLint i; - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glBlendFunc(GL_SRC_ALPHA, GL_ZERO); - - if (!rgb) { - for (i = 0; i < 16; i++) { - glutSetColor(i+CI_ANTI_ALIAS_RED, i/15.0, 0.0, 0.0); - glutSetColor(i+CI_ANTI_ALIAS_YELLOW, i/15.0, i/15.0, 0.0); - glutSetColor(i+CI_ANTI_ALIAS_GREEN, 0.0, i/15.0, 0.0); - } - } - - mode = GL_FALSE; - size = 1; -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; - - glViewport(0, 0, width, height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-windW/2, windW/2, -windH/2, windH/2); - glMatrixMode(GL_MODELVIEW); -} - -static void Key2(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_LEFT: - point[0] -= 0.25; - break; - case GLUT_KEY_RIGHT: - point[0] += 0.25; - break; - case GLUT_KEY_UP: - point[1] += 0.25; - break; - case GLUT_KEY_DOWN: - point[1] -= 0.25; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case '1': - mode = !mode; - break; - case 'W': - size++; - break; - case 'w': - size--; - if (size < 1) { - size = 1; - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - - glClear(GL_COLOR_BUFFER_BIT); - - SetColor(COLOR_YELLOW); - glBegin(GL_LINE_STRIP); - glVertex2f(-windW/2, 0); - glVertex2f(windW/2, 0); - glEnd(); - glBegin(GL_LINE_STRIP); - glVertex2f(0, -windH/2); - glVertex2f(0, windH/2); - glEnd(); - - if (mode) { - glEnable(GL_BLEND); - glEnable(GL_POINT_SMOOTH); - } else { - glDisable(GL_BLEND); - glDisable(GL_POINT_SMOOTH); - } - - glPointSize(size); - if (mode) { - (rgb) ? glColor3f(1.0, 0.0, 0.0) : glIndexf(CI_ANTI_ALIAS_RED); - } else { - (rgb) ? glColor3f(1.0, 0.0, 0.0) : glIndexf(CI_RED); - } - glBegin(GL_POINTS); - glVertex3fv(point); - glEnd(); - - glDisable(GL_POINT_SMOOTH); - glDisable(GL_BLEND); - - glPointSize(1); - SetColor(COLOR_GREEN); - glBegin(GL_POINTS); - glVertex3fv(point); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - windW = 300; - windH = 300; - glutInitWindowPosition(0, 0); glutInitWindowSize( windW, windH); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Point Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/prim.c b/progs/samples/prim.c deleted file mode 100644 index c04750725fb..00000000000 --- a/progs/samples/prim.c +++ /dev/null @@ -1,545 +0,0 @@ -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define PIXEL_CENTER(x) ((long)(x) + 0.5) - -#define GAP 10 -#define ROWS 3 -#define COLS 4 - -#define OPENGL_WIDTH 48 -#define OPENGL_HEIGHT 13 - - -GLenum rgb, doubleBuffer, windType; -GLint windW, windH; - -GLenum mode1, mode2; -GLint boxW, boxH; -GLubyte OpenGL_bits[] = { - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0xfb, 0xff, 0xff, 0xff, 0x01, - 0x7f, 0xfb, 0xff, 0xff, 0xff, 0x01, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x8f, 0xb7, 0xf9, 0xfc, 0x01, - 0x63, 0xdb, 0xb0, 0x8d, 0x0d, 0x00, - 0x63, 0xdb, 0xb7, 0x8d, 0x0d, 0x00, - 0x63, 0xdb, 0xb6, 0x8d, 0x0d, 0x00, - 0x63, 0x8f, 0xf3, 0xcc, 0x0d, 0x00, - 0x63, 0x00, 0x00, 0x0c, 0x4c, 0x0a, - 0x63, 0x00, 0x00, 0x0c, 0x4c, 0x0e, - 0x63, 0x00, 0x00, 0x8c, 0xed, 0x0e, - 0x3e, 0x00, 0x00, 0xf8, 0x0c, 0x00, -}; - - -#include "tkmap.c" - -static void Init(void) -{ - - mode1 = GL_TRUE; - mode2 = GL_TRUE; -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; -} - -static void RotateColorMask(void) -{ - static GLint rotation = 0; - - rotation = (rotation + 1) & 0x3; - switch (rotation) { - case 0: - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glIndexMask( 0xff ); - break; - case 1: - glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE); - glIndexMask(0xFE); - break; - case 2: - glColorMask(GL_TRUE, GL_FALSE, GL_TRUE, GL_TRUE); - glIndexMask(0xFD); - break; - case 3: - glColorMask(GL_TRUE, GL_TRUE, GL_FALSE, GL_TRUE); - glIndexMask(0xFB); - break; - } -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case '1': - mode1 = !mode1; - break; - case '2': - mode2 = !mode2; - break; - case '3': - RotateColorMask(); - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Viewport(GLint row, GLint column) -{ - GLint x, y; - - boxW = (windW - (COLS + 1) * GAP) / COLS; - boxH = (windH - (ROWS + 1) * GAP) / ROWS; - - x = GAP + column * (boxW + GAP); - y = GAP + row * (boxH + GAP); - - glViewport(x, y, boxW, boxH); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-boxW/2, boxW/2, -boxH/2, boxH/2, 0.0, 1.0); - glMatrixMode(GL_MODELVIEW); - - glEnable(GL_SCISSOR_TEST); - glScissor(x, y, boxW, boxH); -} - -static void Point(void) -{ - GLint i; - - glBegin(GL_POINTS); - SetColor(COLOR_WHITE); - glVertex2i(0, 0); - for (i = 1; i < 8; i++) { - GLint j = i * 2; - SetColor(COLOR_BLACK+i); - glVertex2i(-j, -j); - glVertex2i(-j, 0); - glVertex2i(-j, j); - glVertex2i(0, j); - glVertex2i(j, j); - glVertex2i(j, 0); - glVertex2i(j, -j); - glVertex2i(0, -j); - } - glEnd(); -} - -static void Lines(void) -{ - GLint i; - - glPushMatrix(); - - glTranslatef(-12, 0, 0); - for (i = 1; i < 8; i++) { - SetColor(COLOR_BLACK+i); - glBegin(GL_LINES); - glVertex2i(-boxW/4, -boxH/4); - glVertex2i(boxW/4, boxH/4); - glEnd(); - glTranslatef(4, 0, 0); - } - - glPopMatrix(); - - glBegin(GL_LINES); - glVertex2i(0, 0); - glEnd(); -} - -static void LineStrip(void) -{ - - glBegin(GL_LINE_STRIP); - SetColor(COLOR_RED); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(-boxH/4)); - SetColor(COLOR_GREEN); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_BLUE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_WHITE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(-boxH/4)); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2i(0, 0); - glEnd(); -} - -static void LineLoop(void) -{ - - glBegin(GL_LINE_LOOP); - SetColor(COLOR_RED); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(-boxH/4)); - SetColor(COLOR_GREEN); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_BLUE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_WHITE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(-boxH/4)); - glEnd(); - - glEnable(GL_LOGIC_OP); - glLogicOp(GL_XOR); - - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - - SetColor(COLOR_MAGENTA); - glBegin(GL_LINE_LOOP); - glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(-boxH/8)); - glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(boxH/8)); - glEnd(); - glBegin(GL_LINE_LOOP); - glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(boxH/8+5)); - glVertex2f(PIXEL_CENTER(boxW/8), PIXEL_CENTER(boxH/8+5)); - glEnd(); - glDisable(GL_LOGIC_OP); - glDisable(GL_BLEND); - - SetColor(COLOR_GREEN); - glBegin(GL_POINTS); - glVertex2i(0, 0); - glEnd(); - - glBegin(GL_LINE_LOOP); - glVertex2i(0, 0); - glEnd(); -} - -static void Bitmap(void) -{ - - glBegin(GL_LINES); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/2, 0); - glVertex2i(boxW/2, 0); - glVertex2i(0, -boxH/2); - glVertex2i(0, boxH/2); - SetColor(COLOR_RED); - glVertex2i(0, -3); - glVertex2i(0, -3+OPENGL_HEIGHT); - SetColor(COLOR_BLUE); - glVertex2i(0, -3); - glVertex2i(OPENGL_WIDTH, -3); - glEnd(); - - SetColor(COLOR_GREEN); - - glPixelStorei(GL_UNPACK_LSB_FIRST, GL_TRUE); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glRasterPos2i(0, 0); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, 0, 3, 0.0, 0.0, OpenGL_bits); -} - -static void Triangles(void) -{ - - glBegin(GL_TRIANGLES); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, -boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, -boxH/16); - - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, boxH/16); - glEnd(); - - glBegin(GL_TRIANGLES); - glVertex2i(0, 0); - glVertex2i(-100, 100); - glEnd(); -} - -static void TriangleStrip(void) -{ - - glBegin(GL_TRIANGLE_STRIP); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_BLUE); - glVertex2i(0, -boxH/4); - SetColor(COLOR_WHITE); - glVertex2i(0, boxH/4); - SetColor(COLOR_CYAN); - glVertex2i(boxW/4, -boxH/4); - SetColor(COLOR_YELLOW); - glVertex2i(boxW/4, boxH/4); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2i(0, 0); - glVertex2i(-100, 100); - glEnd(); -} - -static void TriangleFan(void) -{ - GLint vx[8][2]; - GLint x0, y0, x1, y1, x2, y2, x3, y3; - GLint i; - - y0 = -boxH/4; - y1 = y0 + boxH/2/3; - y2 = y1 + boxH/2/3; - y3 = boxH/4; - x0 = -boxW/4; - x1 = x0 + boxW/2/3; - x2 = x1 + boxW/2/3; - x3 = boxW/4; - - vx[0][0] = x0; vx[0][1] = y1; - vx[1][0] = x0; vx[1][1] = y2; - vx[2][0] = x1; vx[2][1] = y3; - vx[3][0] = x2; vx[3][1] = y3; - vx[4][0] = x3; vx[4][1] = y2; - vx[5][0] = x3; vx[5][1] = y1; - vx[6][0] = x2; vx[6][1] = y0; - vx[7][0] = x1; vx[7][1] = y0; - - glBegin(GL_TRIANGLE_FAN); - SetColor(COLOR_WHITE); - glVertex2i(0, 0); - for (i = 0; i < 8; i++) { - SetColor(COLOR_WHITE-i); - glVertex2iv(vx[i]); - } - glEnd(); - - glBegin(GL_TRIANGLE_FAN); - glVertex2i(0, 0); - glVertex2i(-100, 100); - glEnd(); -} - -static void Rect(void) -{ - - SetColor(COLOR_GREEN); - glRecti(-boxW/4, -boxH/4, boxW/4, boxH/4); -} - -static void PolygonFunc(void) -{ - GLint vx[8][2]; - GLint x0, y0, x1, y1, x2, y2, x3, y3; - GLint i; - - y0 = -boxH/4; - y1 = y0 + boxH/2/3; - y2 = y1 + boxH/2/3; - y3 = boxH/4; - x0 = -boxW/4; - x1 = x0 + boxW/2/3; - x2 = x1 + boxW/2/3; - x3 = boxW/4; - - vx[0][0] = x0; vx[0][1] = y1; - vx[1][0] = x0; vx[1][1] = y2; - vx[2][0] = x1; vx[2][1] = y3; - vx[3][0] = x2; vx[3][1] = y3; - vx[4][0] = x3; vx[4][1] = y2; - vx[5][0] = x3; vx[5][1] = y1; - vx[6][0] = x2; vx[6][1] = y0; - vx[7][0] = x1; vx[7][1] = y0; - - glBegin(GL_POLYGON); - for (i = 0; i < 8; i++) { - SetColor(COLOR_WHITE-i); - glVertex2iv(vx[i]); - } - glEnd(); - - glBegin(GL_POLYGON); - glVertex2i(0, 0); - glVertex2i(100, 100); - glEnd(); -} - -static void Quads(void) -{ - - glBegin(GL_QUADS); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, -boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, -boxH/16); - SetColor(COLOR_WHITE); - glVertex2i(boxW/4, -boxH/4); - - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, boxH/16); - SetColor(COLOR_WHITE); - glVertex2i(boxW/4, boxH/4); - glEnd(); - - glBegin(GL_QUADS); - glVertex2i(0, 0); - glVertex2i(100, 100); - glVertex2i(-100, 100); - glEnd(); -} - -static void QuadStrip(void) -{ - - glBegin(GL_QUAD_STRIP); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_BLUE); - glVertex2i(0, -boxH/4); - SetColor(COLOR_WHITE); - glVertex2i(0, boxH/4); - SetColor(COLOR_CYAN); - glVertex2i(boxW/4, -boxH/4); - SetColor(COLOR_YELLOW); - glVertex2i(boxW/4, boxH/4); - glEnd(); - - glBegin(GL_QUAD_STRIP); - glVertex2i(0, 0); - glVertex2i(100, 100); - glVertex2i(-100, 100); - glEnd(); -} - -static void Draw(void) -{ - - glViewport(0, 0, windW, windH); - glDisable(GL_SCISSOR_TEST); - - glPushAttrib(GL_COLOR_BUFFER_BIT); - - glColorMask(1, 1, 1, 1); - glIndexMask(~0); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glPopAttrib(); - - if (mode1) { - glShadeModel(GL_SMOOTH); - } else { - glShadeModel(GL_FLAT); - } - - if (mode2) { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - } else { - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - } - - Viewport(0, 0); Point(); - Viewport(0, 1); Lines(); - Viewport(0, 2); LineStrip(); - Viewport(0, 3); LineLoop(); - - Viewport(1, 0); Bitmap(); - Viewport(1, 1); TriangleFan(); - Viewport(1, 2); Triangles(); - Viewport(1, 3); TriangleStrip(); - - Viewport(2, 0); Rect(); - Viewport(2, 1); PolygonFunc(); - Viewport(2, 2); Quads(); - Viewport(2, 3); QuadStrip(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - windW = 600; - windH = 300; - glutInitWindowPosition(0, 0); glutInitWindowSize( windW, windH); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Primitive Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/quad.c b/progs/samples/quad.c deleted file mode 100644 index 193850abc45..00000000000 --- a/progs/samples/quad.c +++ /dev/null @@ -1,457 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#ifndef CALLBACK -#define CALLBACK -#endif - - -#define PI 3.141592654 -#define BLACK 0 -#define GRAY 128 -#define WHITE 255 -#define RD 0xA4,0x00,0x00,0xFF -#define WT 0xFF,0xFF,0xFF,0xFF -#define brickImageWidth 16 -#define brickImageHeight 16 - - -#include "loadppm.c" - -GLenum rgb, doubleBuffer; - -#include "tkmap.c" - -float black[3] = { - 0.0, 0.0, 0.0 -}; -float blue[3] = { - 0.0, 0.0, 1.0 -}; -float gray[3] = { - 0.5, 0.5, 0.5 -}; -float white[3] = { - 1.0, 1.0, 1.0 -}; - -GLenum doDither = GL_TRUE; -GLenum shade = GL_TRUE; -GLenum texture = GL_TRUE; - -float xRotation = 30.0, yRotation = 30.0, zRotation = 0.0; -GLint radius1, radius2; -GLdouble angle1, angle2; -GLint slices, stacks; -GLint height; -GLint orientation = GLU_OUTSIDE; -GLint whichQuadric=0; -GLUquadricObj *quadObj; - -GLubyte brickImage[4*brickImageWidth*brickImageHeight] = { - RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, - WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, - RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, - RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, - RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, - RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, - WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, - RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, - RD, RD, RD, RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, - WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, WT, - RD, RD, RD, RD, WT, RD, RD, RD, RD, RD, RD, RD, RD, RD, WT, RD -}; -char *texFileName = 0; - - -static void CALLBACK ErrorHandler(GLenum which) -{ - - fprintf(stderr, "Quad Error: %s\n", (char *) gluErrorString(which)); -} - -typedef void (GLAPIENTRY *callback_t)(); - -static void Init(void) -{ - static GLint colorIndexes[3] = {0, 200, 255}; - 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[] = {30.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 back_mat_shininess[] = {50.0}; - static float back_mat_specular[] = {0.5, 0.5, 0.2, 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 nearest[] = {GL_NEAREST}; - static PPMImage *image; - - if (!rgb) { - SetGreyRamp(); - } - glClearColor(0.0, 0.0, 0.0, 0.0); - - 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_TWO_SIDE, lmodel_twoside); - 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); - if (!rgb) { - glMaterialiv( GL_FRONT_AND_BACK, GL_COLOR_INDEXES, colorIndexes); - } - - 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, nearest); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nearest); - if (texFileName) { - image = LoadPPM(texFileName); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image->sizeX, image->sizeY, - GL_RGB, GL_UNSIGNED_BYTE, image->data); - } else { - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, 4, brickImageWidth, brickImageHeight, - 0, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid *)brickImage); - } - - quadObj = gluNewQuadric(); - gluQuadricCallback(quadObj, GLU_ERROR, (callback_t) ErrorHandler); - - radius1 = 10; - radius2 = 5; - angle1 = 90; - angle2 = 180; - slices = 16; - stacks = 10; - height = 20; -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1, 1, -1, 1, 1, 10); - gluLookAt(2, 2, 2, 0, 0, 0, 0, 0, 1); - glMatrixMode(GL_MODELVIEW); -} - -static void Key2(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_LEFT: - yRotation += 5; - break; - case GLUT_KEY_RIGHT: - yRotation -= 5; - break; - case GLUT_KEY_UP: - xRotation += 5; - break; - case GLUT_KEY_DOWN: - xRotation -= 5; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - - case 'X': - zRotation += 5; - break; - case 'x': - zRotation -= 5; - break; - - case '1': - gluQuadricDrawStyle(quadObj, GLU_FILL); - break; - case '2': - gluQuadricDrawStyle(quadObj, GLU_POINT); - break; - case '3': - gluQuadricDrawStyle(quadObj, GLU_LINE); - break; - case '4': - gluQuadricDrawStyle(quadObj, GLU_SILHOUETTE); - break; - - case '0': - shade = !shade; - if (shade) { - glShadeModel(GL_SMOOTH); - gluQuadricNormals(quadObj, GLU_SMOOTH); - } else { - glShadeModel(GL_FLAT); - gluQuadricNormals(quadObj, GLU_FLAT); - } - break; - - case 'A': - stacks++; - break; - case 'a': - stacks--; - break; - - case 'S': - slices++; - break; - case 's': - slices--; - break; - - case 'd': - switch(orientation) { - case GLU_OUTSIDE: - orientation = GLU_INSIDE; - break; - case GLU_INSIDE: - default: - orientation = GLU_OUTSIDE; - break; - } - gluQuadricOrientation(quadObj, orientation); - break; - - case 'f': - whichQuadric = (whichQuadric + 1) % 4; - break; - - case 'G': - radius1 += 1; - break; - case 'g': - radius1 -= 1; - break; - - case 'J': - radius2 += 1; - break; - case 'j': - radius2 -= 1; - break; - - case 'H': - height += 2; - break; - case 'h': - height -= 2; - break; - - case 'K': - angle1 += 5; - break; - case 'k': - angle1 -= 5; - break; - - case 'L': - angle2 += 5; - break; - case 'l': - angle2 -= 5; - break; - - case 'z': - texture = !texture; - if (texture) { - gluQuadricTexture(quadObj, GL_TRUE); - glEnable(GL_TEXTURE_2D); - } else { - gluQuadricTexture(quadObj, GL_FALSE); - glDisable(GL_TEXTURE_2D); - } - break; - - case 'q': - glDisable(GL_CULL_FACE); - break; - case 'w': - glEnable(GL_CULL_FACE); - glCullFace(GL_FRONT); - break; - case 'e': - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - break; - - case 'r': - glFrontFace(GL_CW); - break; - case 't': - glFrontFace(GL_CCW); - break; - - case 'y': - doDither = !doDither; - (doDither) ? glEnable(GL_DITHER) : glDisable(GL_DITHER); - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - - glLoadIdentity(); - glRotatef(xRotation, 1, 0, 0); - glRotatef(yRotation, 0, 1, 0); - glRotatef(zRotation, 0, 0, 1); - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glColor3f(1.0, 1.0, 1.0); - switch (whichQuadric) { - case 0: - glTranslatef(0, 0, -height/20.0); - gluCylinder(quadObj, radius1/10.0, radius2/10.0, height/10.0, - slices, stacks); - break; - case 1: - gluSphere(quadObj, radius1/10.0, slices, stacks); - break; - case 2: - gluPartialDisk(quadObj, radius2/10.0, radius1/10.0, slices, - stacks, angle1, angle2); - break; - case 3: - gluDisk(quadObj, radius2/10.0, radius1/10.0, slices, stacks); - break; - } - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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 if (strcmp(argv[i], "-f") == 0) { - if (i+1 >= argc || argv[i+1][0] == '-') { - printf("-f (No file name).\n"); - return GL_FALSE; - } else { - texFileName = argv[++i]; - } - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_DEPTH; - type |= (rgb) ? GLUT_RGB : GLUT_INDEX; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Quad Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/rgbtoppm.c b/progs/samples/rgbtoppm.c deleted file mode 100644 index 403578ef423..00000000000 --- a/progs/samples/rgbtoppm.c +++ /dev/null @@ -1,303 +0,0 @@ - -/* texture.c - by David Blythe, SGI */ - -/* texload is a simplistic routine for reading an SGI .rgb image file. */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <GL/glut.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 -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; - int result; - - 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) { - free(image); - return NULL; - } - - result = fread(image, 1, 12, image->file); - assert(result == 12); - - if (swapFlag) { - ConvertShort(&image->imagic, 1); - ConvertShort(&image->type, 1); - ConvertShort(&image->dim, 1); - ConvertShort(&image->xsize, 1); - ConvertShort(&image->ysize, 1); - ConvertShort(&image->zsize, 1); - } - - 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); - result = fread(image->rowStart, 1, x, image->file); - assert(result == x); - result = fread(image->rowSize, 1, x, image->file); - assert(result == x); - 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; - int result; - - if ((image->type & 0xFF00) == 0x0100) { - fseek(image->file, (long) image->rowStart[y+z*image->ysize], SEEK_SET); - result = fread(image->tmp, 1, (unsigned int)image->rowSize[y+z*image->ysize], - image->file); - assert(result == (unsigned int)image->rowSize[y+z*image->ysize]); - - 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); - result = fread(buf, 1, image->xsize, image->file); - assert(result == image->xsize); - } -} - -#if 0 -static 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; y<image->ysize; y++) { - ImageGetRow(image,lptr,y,0); - lptr += image->xsize; - } - ImageClose(image); - - return (unsigned char *) base; -} -#endif - -static 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); - ImageClose(image); - return NULL; - } - ptr = base; - for(y=0; y<image->ysize; 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; -} - -int main(int argc, char **argv) -{ - int width = 0; - int height = 0; - GLubyte *data; - char buff[32]; - int n; - FILE *fo; - - if (argc != 3) - { - fprintf(stderr, "usage: %s <infile.rgb> <outfile.p6>\n", argv[0]); - return 1; - } - - data = read_rgb_texture(argv[1], &width, &height); - - n = sprintf(buff, "P6\n%d %d\n255\n", width, height); - - /* [dBorca] avoid LF to CRLF conversion */ - if ((fo = fopen(argv[2], "wb")) == NULL) { - fprintf(stderr, "Cannot open output file!\n"); - exit(1); - } - - fwrite(buff, n, 1, fo); - fwrite(data, width * 3, height, fo); - - fclose(fo); - - return 0; -} diff --git a/progs/samples/select.c b/progs/samples/select.c deleted file mode 100644 index 31ed93b9e05..00000000000 --- a/progs/samples/select.c +++ /dev/null @@ -1,462 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <string.h> -#include <time.h> -#include <GL/glut.h> - - -#define MAXOBJS 10000 -#define MAXSELECT 100 -#define MAXFEED 300 -#define SOLID 1 -#define LINE 2 -#define POINT 3 - - -GLint windW, windH; - -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); - glGetIntegerv(GL_VIEWPORT, vp); - -#if 0 /* debug - test culling */ - glCullFace(GL_BACK); - glFrontFace(GL_CW); - glEnable(GL_CULL_FACE); -#endif -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; -} - -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); - (void)glRenderMode(GL_SELECT); - glInitNames(); - glPushName(~0); - - glPushMatrix(); - - glViewport(0, 0, windW, windH); - glGetIntegerv(GL_VIEWPORT, vp); - - 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 = NULL; - 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) - return; - - hit = DoSelect((GLint)mouseX, (GLint)mouseY); - if (hit != -1) { - if (button == GLUT_LEFT_BUTTON) { - RecolorTri(hit); - } - if (button == GLUT_MIDDLE_BUTTON) { - GrowTri(hit); - } - if (button == GLUT_RIGHT_BUTTON) { - DeleteTri(hit); - } - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - - glPushMatrix(); - - glViewport(0, 0, windW, windH); - glGetIntegerv(GL_VIEWPORT, vp); - - 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(); - - glFlush(); -} - -static void DrawZoom(GLint x, GLint y) -{ - - glPushMatrix(); - - glViewport(0, 0, windW, windH); - glGetIntegerv(GL_VIEWPORT, vp); - - 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_RENDER); - - glPopMatrix(); -} - -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(); - - glViewport(0, 0, windW, windH); - glGetIntegerv(GL_VIEWPORT, vp); - - 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); -} - -static void Key2(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_LEFT: - zRotation += 0.5; - break; - case GLUT_KEY_RIGHT: - zRotation -= 0.5; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - case 'Z': - zoom /= 0.75; - break; - case 'z': - zoom *= 0.75; - break; - case 'f': - DoFeedback(); - break; - case 'd': - DrawZoom(x, y); - break; - case 'l': - linePoly = !linePoly; - if (linePoly) { - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - } else { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - windW = 300; - windH = 300; - glutInitWindowPosition(0, 0); glutInitWindowSize( windW, windH); - - type = GLUT_RGB | GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Select Test") == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutMouseFunc(Mouse); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/shape.c b/progs/samples/shape.c deleted file mode 100644 index d342ee5b07b..00000000000 --- a/progs/samples/shape.c +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define OPENGL_WIDTH 24 -#define OPENGL_HEIGHT 13 - - -GLenum rgb, doubleBuffer, windType; -GLint objectIndex = 0; -GLuint bases[20]; -float angleX = 0.0, angleY = 0.0, angleZ = 0.0; -float scaleX = 1.0, scaleY = 1.0, scaleZ = 1.0; -float shiftX = 0.0, shiftY = 0.0, shiftZ = 0.0; - - -#include "tkmap.c" - -static void Init(void) -{ - - bases[0] = glGenLists(1); - glNewList(bases[0], GL_COMPILE); - glutWireSphere(1.0, 20, 10); - glEndList(); - - bases[1] = glGenLists(1); - glNewList(bases[1], GL_COMPILE); - glutSolidSphere(1.0, 20, 10); - glEndList(); - - bases[2] = glGenLists(1); - glNewList(bases[2], GL_COMPILE); - glutWireCube(1.0); - glEndList(); - - bases[3] = glGenLists(1); - glNewList(bases[3], GL_COMPILE); - glutSolidCube(1.0); - glEndList(); - - bases[4] = glGenLists(1); - glNewList(bases[4], GL_COMPILE); - glutWireTorus(1.0, 1.0, 10, 20); - glEndList(); - - bases[5] = glGenLists(1); - glNewList(bases[5], GL_COMPILE); - glutSolidTorus(1.0, 1.0, 10, 20); - glEndList(); - - bases[6] = glGenLists(1); - glNewList(bases[6], GL_COMPILE); - glutWireIcosahedron(); - glEndList(); - - bases[7] = glGenLists(1); - glNewList(bases[7], GL_COMPILE); - glutSolidIcosahedron(); - glEndList(); - - bases[8] = glGenLists(1); - glNewList(bases[8], GL_COMPILE); - glutWireOctahedron(); - glEndList(); - - bases[9] = glGenLists(1); - glNewList(bases[9], GL_COMPILE); - glutSolidOctahedron(); - glEndList(); - - bases[10] = glGenLists(1); - glNewList(bases[10], GL_COMPILE); - glutWireTetrahedron(); - glEndList(); - - bases[11] = glGenLists(1); - glNewList(bases[11], GL_COMPILE); - glutSolidTetrahedron(); - glEndList(); - - bases[12] = glGenLists(1); - glNewList(bases[12], GL_COMPILE); - glutWireDodecahedron(); - glEndList(); - - bases[13] = glGenLists(1); - glNewList(bases[13], GL_COMPILE); - glutSolidDodecahedron(); - glEndList(); - - bases[14] = glGenLists(1); - glNewList(bases[14], GL_COMPILE); - glutWireCone(5.0, 5.0, 20, 10); - glEndList(); - - bases[15] = glGenLists(1); - glNewList(bases[15], GL_COMPILE); - glutSolidCone(5.0, 5.0, 20, 10); - glEndList(); - - bases[16] = glGenLists(1); - glNewList(bases[16], GL_COMPILE); - glutWireTeapot(1.0); - glEndList(); - - bases[17] = glGenLists(1); - glNewList(bases[17], GL_COMPILE); - glutSolidTeapot(1.0); - glEndList(); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearIndex(0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-400.0, 400.0, -200.0, 200.0, -400.0, 400.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key2(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_LEFT: - shiftX -= 20.0; - break; - case GLUT_KEY_RIGHT: - shiftX += 20.0; - break; - case GLUT_KEY_UP: - shiftY += 20.0; - break; - case GLUT_KEY_DOWN: - shiftY -= 20.0; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - - case 32: - objectIndex++; - if (objectIndex > 17) { - objectIndex = 0; - } - break; - - case 'n': - shiftZ += 20.0; - break; - case 'm': - shiftZ -= 20.0; - break; - - case 'q': - scaleX -= 0.1; - if (scaleX < 0.1) { - scaleX = 0.1; - } - break; - case 'w': - scaleX += 0.1; - break; - case 'a': - scaleY -= 0.1; - if (scaleY < 0.1) { - scaleY = 0.1; - } - break; - case 's': - scaleY += 0.1; - break; - case 'z': - scaleZ -= 0.1; - if (scaleZ < 0.1) { - scaleZ = 0.1; - } - break; - case 'x': - scaleZ += 0.1; - break; - - case 'e': - angleX -= 5.0; - if (angleX < 0.0) { - angleX = 360.0 + angleX; - } - break; - case 'r': - angleX += 5.0; - if (angleX > 360.0) { - angleX = angleX - 360.0; - } - break; - case 'd': - angleY -= 5.0; - if (angleY < 0.0) { - angleY = 360.0 + angleY; - } - break; - case 'f': - angleY += 5.0; - if (angleY > 360.0) { - angleY = angleY - 360.0; - } - break; - case 'c': - angleZ -= 5.0; - if (angleZ < 0.0) { - angleZ = 360.0 + angleZ; - } - break; - case 'v': - angleZ += 5.0; - if (angleZ > 360.0) { - angleZ = angleZ - 360.0; - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - - glClear(GL_COLOR_BUFFER_BIT); - - SetColor(COLOR_WHITE); - - glPushMatrix(); - - glTranslatef(shiftX, shiftY, shiftZ); - glRotatef(angleX, 1.0, 0.0, 0.0); - glRotatef(angleY, 0.0, 1.0, 0.0); - glRotatef(angleZ, 0.0, 0.0, 1.0); - glScalef(scaleX, scaleY, scaleZ); - - glCallList(bases[objectIndex]); - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 400, 400); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Font Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/sphere.c b/progs/samples/sphere.c deleted file mode 100644 index 23d4fe32c02..00000000000 --- a/progs/samples/sphere.c +++ /dev/null @@ -1,1014 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -/* BEP: renamed "nearest" as "nnearest" to avoid math.h collision on AIX */ - -#include <stdio.h> -#include <string.h> -#include <math.h> -#include <stdlib.h> -#include <GL/glut.h> -#include "readtex.h" - - -#ifndef PI -#define PI 3.14159265358979323846 -#endif - - -GLenum doubleBuffer; -int W = 400, H = 400; - -char *imageFileName = "../images/reflect.rgb"; - -float *minFilter, *magFilter, *sWrapMode, *tWrapMode; -float decal[] = {GL_DECAL}; -float modulate[] = {GL_MODULATE}; -float repeat[] = {GL_REPEAT}; -float clamp[] = {GL_CLAMP}; -float nnearest[] = {GL_NEAREST}; -float linear[] = {GL_LINEAR}; -float nearest_mipmap_nearest[] = {GL_NEAREST_MIPMAP_NEAREST}; -float nearest_mipmap_linear[] = {GL_NEAREST_MIPMAP_LINEAR}; -float linear_mipmap_nearest[] = {GL_LINEAR_MIPMAP_NEAREST}; -float linear_mipmap_linear[] = {GL_LINEAR_MIPMAP_LINEAR}; -GLint sphereMap[] = {GL_SPHERE_MAP}; - -float xRotation = 0.0, yRotation = 0.0; -float zTranslate = -3.0; -GLenum autoRotate = GL_TRUE; -GLboolean isLit = GL_TRUE; -GLboolean isFogged = GL_FALSE; -GLboolean doTexture = GL_TRUE; -float *textureEnvironment = modulate; - -int cube, cage, cylinder, torus, genericObject; - -float c[6][4][4][3] = { - { - { - { - 1.0, 1.0, -1.0 - }, - { - 0.0, 1.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 - }, - { - -1.0, 0.0, -1.0 - }, - { - 0.0, 0.0, -1.0 - }, - }, - { - { - 0.0, 0.0, -1.0 - }, - { - -1.0, 0.0, -1.0 - }, - { - -1.0, -1.0, -1.0 - }, - { - 0.0, -1.0, -1.0 - }, - }, - { - { - 1.0, 0.0, -1.0 - }, - { - 0.0, 0.0, -1.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 - }, - { - 1.0, 0.0, 0.0 - }, - { - 1.0, 0.0, 1.0 - }, - }, - { - { - 1.0, 1.0, 0.0 - }, - { - 1.0, 1.0, -1.0 - }, - { - 1.0, 0.0, -1.0 - }, - { - 1.0, 0.0, 0.0 - }, - }, - { - { - 1.0, 0.0, -1.0 - }, - { - 1.0, -1.0, -1.0 - }, - { - 1.0, -1.0, 0.0 - }, - { - 1.0, 0.0, 0.0 - }, - }, - { - { - 1.0, 0.0, 0.0 - }, - { - 1.0, -1.0, 0.0 - }, - { - 1.0, -1.0, 1.0 - }, - { - 1.0, 0.0, 1.0 - }, - }, - }, - { - { - { - -1.0, 1.0, 1.0 - }, - { - 0.0, 1.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 - }, - { - 1.0, 0.0, 1.0 - }, - { - 0.0, 0.0, 1.0 - }, - }, - { - { - 1.0, 0.0, 1.0 - }, - { - 1.0, -1.0, 1.0 - }, - { - 0.0, -1.0, 1.0 - }, - { - 0.0, 0.0, 1.0 - }, - }, - { - { - 0.0, -1.0, 1.0 - }, - { - -1.0, -1.0, 1.0 - }, - { - -1.0, 0.0, 1.0 - }, - { - 0.0, 0.0, 1.0 - }, - }, - }, - { - { - { - -1.0, 1.0, -1.0 - }, - { - -1.0, 1.0, 0.0 - }, - { - -1.0, 0.0, 0.0 - }, - { - -1.0, 0.0, -1.0 - }, - }, - { - { - -1.0, 1.0, 0.0 - }, - { - -1.0, 1.0, 1.0 - }, - { - -1.0, 0.0, 1.0 - }, - { - -1.0, 0.0, 0.0 - }, - }, - { - { - -1.0, 0.0, 1.0 - }, - { - -1.0, -1.0, 1.0 - }, - { - -1.0, -1.0, 0.0 - }, - { - -1.0, 0.0, 0.0 - }, - }, - { - { - -1.0, -1.0, 0.0 - }, - { - -1.0, -1.0, -1.0 - }, - { - -1.0, 0.0, -1.0 - }, - { - -1.0, 0.0, 0.0 - }, - }, - }, - { - { - { - -1.0, 1.0, 1.0 - }, - { - -1.0, 1.0, 0.0 - }, - { - 0.0, 1.0, 0.0 - }, - { - 0.0, 1.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 - }, - }, - { - { - 0.0, 1.0, -1.0 - }, - { - 1.0, 1.0, -1.0 - }, - { - 1.0, 1.0, 0.0 - }, - { - 0.0, 1.0, 0.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 - }, - }, - }, - { - { - { - -1.0, -1.0, -1.0 - }, - { - -1.0, -1.0, 0.0 - }, - { - 0.0, -1.0, 0.0 - }, - { - 0.0, -1.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 - }, - }, - { - { - 0.0, -1.0, 1.0 - }, - { - 1.0, -1.0, 1.0 - }, - { - 1.0, -1.0, 0.0 - }, - { - 0.0, -1.0, 0.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 - }, - }, - } -}; - -float n[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 - } -}; - -GLfloat identity[16] = { - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, -}; - - -static void BuildCylinder(int numEdges) -{ - int i, top = 1.0, bottom = -1.0; - float x[100], y[100], angle; - - for (i = 0; i <= numEdges; i++) { - angle = i * 2.0 * PI / numEdges; - x[i] = cos(angle); /* was cosf() */ - y[i] = sin(angle); /* was sinf() */ - } - - glNewList(cylinder, GL_COMPILE); - glBegin(GL_TRIANGLE_STRIP); - for (i = 0; i <= numEdges; i++) { - glNormal3f(x[i], y[i], 0.0); - glVertex3f(x[i], y[i], bottom); - glVertex3f(x[i], y[i], top); - } - glEnd(); - glBegin(GL_TRIANGLE_FAN); - glNormal3f(0.0, 0.0, 1.0); - glVertex3f(0.0, 0.0, top); - for (i = 0; i <= numEdges; i++) { - glVertex3f(x[i], -y[i], top); - } - glEnd(); - glBegin(GL_TRIANGLE_FAN); - glNormal3f(0.0, 0.0, -1.0); - glVertex3f(0.0, 0.0, bottom); - for (i = 0; i <= numEdges; i++) { - glVertex3f(x[i], y[i], bottom); - } - glEnd(); - glEndList(); -} - -static void BuildTorus(float rc, int numc, float rt, int numt) -{ - int i, j, k; - double s, t; - double x, y, z; - double pi, twopi; - - pi = 3.14159265358979323846; - twopi = 2.0 * pi; - - glNewList(torus, GL_COMPILE); - for (i = 0; i < numc; i++) { - glBegin(GL_QUAD_STRIP); - for (j = 0; j <= numt; j++) { - for (k = 0; k <= 1; 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(); - } - glEndList(); -} - -static void BuildCage(void) -{ - int i; - float inc; - float right, left, top, bottom, front, back; - - front = 0.0; - back = -8.0; - - left = -4.0; - bottom = -4.0; - right = 4.0; - top = 4.0; - - inc = 2.0 * 4.0 * 0.1; - - glNewList(cage, GL_COMPILE); - for (i = 0; i < 10; i++) { - - /* - ** Back - */ - glBegin(GL_LINES); - glVertex3f(left+i*inc, top, back); - glVertex3f(left+i*inc, bottom, back); - glEnd(); - glBegin(GL_LINES); - glVertex3f(right, bottom+i*inc, back); - glVertex3f(left, bottom+i*inc, back); - glEnd(); - - /* - ** Front - */ - glBegin(GL_LINES); - glVertex3f(left+i*inc, top, front); - glVertex3f(left+i*inc, bottom, front); - glEnd(); - glBegin(GL_LINES); - glVertex3f(right, bottom+i*inc, front); - glVertex3f(left, bottom+i*inc, front); - glEnd(); - - /* - ** Left - */ - glBegin(GL_LINES); - glVertex3f(left, bottom+i*inc, front); - glVertex3f(left, bottom+i*inc, back); - glEnd(); - glBegin(GL_LINES); - glVertex3f(left, top, back+i*inc); - glVertex3f(left, bottom, back+i*inc); - glEnd(); - - /* - ** Right - */ - glBegin(GL_LINES); - glVertex3f(right, top-i*inc, front); - glVertex3f(right, top-i*inc, back); - glEnd(); - glBegin(GL_LINES); - glVertex3f(right, top, back+i*inc); - glVertex3f(right, bottom, back+i*inc); - glEnd(); - - /* - ** Top - */ - glBegin(GL_LINES); - glVertex3f(left+i*inc, top, front); - glVertex3f(left+i*inc, top, back); - glEnd(); - glBegin(GL_LINES); - glVertex3f(right, top, back+i*inc); - glVertex3f(left, top, back+i*inc); - glEnd(); - - /* - ** Bottom - */ - glBegin(GL_LINES); - glVertex3f(right-i*inc, bottom, front); - glVertex3f(right-i*inc, bottom, back); - glEnd(); - glBegin(GL_LINES); - glVertex3f(right, bottom, back+i*inc); - glVertex3f(left, bottom, back+i*inc); - glEnd(); - } - glEndList(); -} - -static void BuildCube(void) -{ - int i, j; - - glNewList(cube, GL_COMPILE); - for (i = 0; i < 6; i++) { - for (j = 0; j < 4; j++) { - glNormal3fv(n[i]); - glBegin(GL_POLYGON); - glVertex3fv(c[i][j][0]); - glVertex3fv(c[i][j][1]); - glVertex3fv(c[i][j][2]); - glVertex3fv(c[i][j][3]); - glEnd(); - } - } - glEndList(); -} - -static void BuildLists(void) -{ - - cube = glGenLists(1); - BuildCube(); - - cage = glGenLists(2); - BuildCage(); - - cylinder = glGenLists(3); - BuildCylinder(60); - - torus = glGenLists(4); - BuildTorus(0.65, 20, .85, 65); - - genericObject = torus; -} - -static void SetDefaultSettings(void) -{ - - magFilter = nnearest; - minFilter = nnearest; - sWrapMode = repeat; - tWrapMode = repeat; - textureEnvironment = modulate; - autoRotate = GL_TRUE; -} - -static unsigned char *AlphaPadImage(int bufSize, unsigned char *inData, int alpha) -{ - unsigned char *outData, *out_ptr, *in_ptr; - int i; - - outData = (unsigned char *) malloc(bufSize * 4); - out_ptr = outData; - in_ptr = inData; - - for (i = 0; i < bufSize; i++) { - *out_ptr++ = *in_ptr++; - *out_ptr++ = *in_ptr++; - *out_ptr++ = *in_ptr++; - *out_ptr++ = alpha; - } - - free (inData); - return outData; -} - -static void Init(void) -{ - float ambient[] = {0.0, 0.0, 0.0, 1.0}; - float diffuse[] = {1.0, 1.0, 1.0, 1.0}; - float specular[] = {1.0, 1.0, 1.0, 1.0}; - float position[] = {0.0, 0.0, 4.0, 0.0}; - float fog_color[] = {0.0, 0.0, 0.0, 1.0}; - float mat_ambient[] = {0.0, 0.0, 0.0, 1.0}; - float mat_shininess[] = {90.0}; - float mat_specular[] = {1.0, 1.0, 1.0, 1.0}; - float mat_diffuse[] = {0.8, 0.8, 0.8, 1.0}; - float lmodel_ambient[] = {0.2, 0.2, 0.2, 1.0}; - float lmodel_twoside[] = {GL_TRUE}; - int w, h; - GLenum format; - GLubyte *image; - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - SetDefaultSettings(); - - image = LoadRGBImage(imageFileName, &w, &h, &format); - if (!image) { - printf("Error: couldn't load %s\n", imageFileName); - exit(1); - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluBuild2DMipmaps(GL_TEXTURE_2D, format, w, h, - GL_RGB, GL_UNSIGNED_BYTE, image); - - free(image); - - glFogf(GL_FOG_DENSITY, 0.125); - glFogi(GL_FOG_MODE, GL_LINEAR); - glFogf(GL_FOG_START, 4.0); - glFogf(GL_FOG_END, 8.5); - glFogfv(GL_FOG_COLOR, fog_color); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, specular); - glLightfv(GL_LIGHT0, GL_POSITION, position); - 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); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - glShadeModel(GL_SMOOTH); - - - glClearColor(0.0, 0.0, 0.0, 0.0); - glEnable(GL_DEPTH_TEST); - - glFrontFace(GL_CW); - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - - glTexGeniv(GL_S, GL_TEXTURE_GEN_MODE, sphereMap); - glTexGeniv(GL_T, GL_TEXTURE_GEN_MODE, sphereMap); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilter); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, sWrapMode); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, tWrapMode); - - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, textureEnvironment); - - BuildLists(); -} - -static void ReInit(void) -{ - if (genericObject == torus) { - glEnable(GL_DEPTH_TEST); - } else { - glDisable(GL_DEPTH_TEST); - } - glEnable(GL_DEPTH_TEST); - -#if 0 - if (isFogged) { - textureEnvironment = modulate; - } -#endif - - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilter); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter); - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, textureEnvironment); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - /* draw cage */ - if (isFogged) - glEnable(GL_FOG); - else - glDisable(GL_FOG); - glColor3f(1, 1, 1); - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - glCallList(cage); - - /* draw object */ - if (isLit) - glEnable(GL_LIGHTING); - else - glColor3f(1.0, 0.5, 0.2); - if (doTexture) - glEnable(GL_TEXTURE_2D); - - glPushMatrix(); - glTranslatef(0.0, 0.0, zTranslate); - glRotatef(xRotation, 1, 0, 0); - glRotatef(yRotation, 0, 1, 0); - glCallList(genericObject); - glPopMatrix(); - - glFlush(); - glutSwapBuffers(); -} - -static void Reshape(int width, int height) -{ - W = width; - H = height; - ReInit(); - glViewport( 0, 0, width, height ); /*new*/ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-0.2, 0.2, -0.2, 0.2, 0.15, 9.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Idle(void) -{ - static double t0 = -1.; - double t, dt; - t = glutGet(GLUT_ELAPSED_TIME) / 1000.; - if (t0 < 0.) - t0 = t; - dt = t - t0; - t0 = t; - - xRotation += .75*60.*dt; - yRotation += .375*60.*dt; - glutPostRedisplay(); -} - -static void Key2(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_LEFT: - yRotation -= 0.5; - autoRotate = GL_FALSE; - ReInit(); - break; - case GLUT_KEY_RIGHT: - yRotation += 0.5; - autoRotate = GL_FALSE; - ReInit(); - break; - case GLUT_KEY_UP: - xRotation -= 0.5; - autoRotate = GL_FALSE; - ReInit(); - break; - case GLUT_KEY_DOWN: - xRotation += 0.5; - autoRotate = GL_FALSE; - ReInit(); - break; - default: - return; - } - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - /* free(image->data);*/ - exit(1); - - case 'a': - autoRotate = !autoRotate; - if (autoRotate) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - - ReInit(); - break; - case 'o': - if (genericObject == cube) { - genericObject = cylinder; - } - else if (genericObject == cylinder) { - genericObject = torus; - } - else { - genericObject = cube; - } - ReInit(); - break; - case 'd': - textureEnvironment = decal; - ReInit(); - break; - case 'm': - textureEnvironment = modulate; - ReInit(); - break; - case 'l': - isLit = !isLit; - ReInit(); - break; - case 'f': - isFogged = !isFogged; - ReInit(); - break; - case 't': - doTexture = !doTexture; - ReInit(); - break; - case '0': - magFilter = nnearest; - ReInit(); - break; - case '1': - magFilter = linear; - ReInit(); - break; - case '2': - minFilter = nnearest; - ReInit(); - break; - case '3': - minFilter = linear; - ReInit(); - break; - case '4': - minFilter = nearest_mipmap_nearest; - ReInit(); - break; - case '5': - minFilter = nearest_mipmap_linear; - ReInit(); - break; - case '6': - minFilter = linear_mipmap_nearest; - ReInit(); - break; - case '7': - minFilter = linear_mipmap_linear; - ReInit(); - break; - default: - return; - } - glutPostRedisplay(); -} - -static GLenum 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; - } else if (strcmp(argv[i], "-f") == 0) { - if (i+1 >= argc || argv[i+1][0] == '-') { - printf("-f (No file name).\n"); - return GL_FALSE; - } else { - imageFileName = argv[++i]; - } - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - if (imageFileName == 0) { - printf("No image file.\n"); - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( W, H); - - type = GLUT_RGB | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Texture Test") == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutIdleFunc(Idle); - - glutMainLoop(); - return 0; -} diff --git a/progs/samples/star.c b/progs/samples/star.c deleted file mode 100644 index 2c44ebfd49e..00000000000 --- a/progs/samples/star.c +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - - -#ifndef PI -#define PI 3.141592657 -#endif - -enum { - NORMAL = 0, - WEIRD = 1 -}; - -enum { - STREAK = 0, - CIRCLE = 1 -}; - -#define MAXSTARS 400 -#define MAXPOS 10000 -#define MAXWARP 500 -#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, windH; - -GLenum flag = NORMAL; -GLint starCount = MAXSTARS / 2; -float speed = 1.0; -GLint nitro = 0; -starRec stars[MAXSTARS]; -float sinTable[MAXANGLES]; - - -static float Sin(float angle) -{ - - return (sinTable[(GLint)angle]); -} - -static float Cos(float angle) -{ - - return (sinTable[((GLint)angle+(MAXANGLES/4))%MAXANGLES]); -} - -static 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); - 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; - } -} - -static 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; -} - -static void MoveStars(void) -{ - float offset; - GLint n; - static double t0 = -1.; - double t, dt; - t = glutGet(GLUT_ELAPSED_TIME) / 1000.; - if (t0 < 0.) - t0 = t; - dt = 85.*(t - t0); - t0 = t; - - 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*dt; - stars[n].y[0] += stars[n].offsetY*dt; - stars[n].z[0] -= offset*dt; - stars[n].rotation += stars[n].offsetR*dt; - if (stars[n].rotation > MAXANGLES) { - stars[n].rotation = 0.0; - } - else if (stars[n].rotation < 0.0) { - stars[n].rotation += 360.0; - } - } -} - -static GLenum StarPoint(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(); - } - return GL_TRUE; - } else { - return GL_FALSE; - } -} - -static 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)) { - if (StarPoint(n) == GL_FALSE) { - NewStar(n, MAXPOS); - } - } else { - NewStar(n, MAXPOS); - } - } -} - -static void Init(void) -{ - float angle; - GLint n; - - srand((unsigned int) glutGet(GLUT_ELAPSED_TIME) ); - - for (n = 0; n < MAXSTARS; n++) { - NewStar(n, 100); - } - - angle = 0.0; - for (n = 0; n < MAXANGLES ; n++) { - sinTable[n] = sin(angle); - angle += PI / (MAXANGLES / 2.0); - } - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glDisable(GL_DITHER); -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; - - glViewport(0, 0, windW, windH); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-0.5, windW+0.5, -0.5, windH+0.5); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 32: - flag = (flag == NORMAL) ? WEIRD : NORMAL; - break; - case 't': - nitro = 1; - break; - default: - return; - } -} - -static void Draw(void) -{ - - MoveStars(); - ShowStars(); - 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; - } - } - - glFlush(); - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum 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; - } - } - return GL_TRUE; -} - -#if !defined(GLUTCALLBACK) -#define GLUTCALLBACK -#endif - -static void GLUTCALLBACK glut_post_redisplay_p(void) -{ - glutPostRedisplay(); -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - windW = 300; - windH = 300; - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Stars") == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutIdleFunc(glut_post_redisplay_p); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/stencil.c b/progs/samples/stencil.c deleted file mode 100644 index e00bbb61b0d..00000000000 --- a/progs/samples/stencil.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glut.h> - - -static void Init(void) -{ - glShadeModel(GL_FLAT); - glClearColor(0.0, 0.0, 0.0, 0.0); - - glClearStencil(0); - glStencilMask(1); - glEnable(GL_STENCIL_TEST); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - } -} - -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); - - 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); - - 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); - - glColor3ub(0, 0, 200); - glBegin(GL_POLYGON); - glVertex3i(3, 3, 0); - glVertex3i(-3, 3, 0); - glVertex3i(-3, -3, 0); - glVertex3i(3, -3, 0); - glEnd(); - - glFlush(); -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-dr") == 0) { - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_RGB | GLUT_SINGLE | GLUT_STENCIL; - glutInitDisplayMode(type); - - if (glutCreateWindow("Stencil Test") == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/stretch.c b/progs/samples/stretch.c deleted file mode 100644 index 11201dca230..00000000000 --- a/progs/samples/stretch.c +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glut.h> - - -#define STEPCOUNT 40 -#define FALSE 0 -#define TRUE 1 -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) - - -enum { - OP_NOOP = 0, - OP_STRETCH, - OP_DRAWPOINT, - OP_DRAWIMAGE -}; - - -typedef struct _cRec { - float x, y; -} cRec; - -typedef struct _vertexRec { - float x, y; - float dX, dY; - float tX, tY; -} vertexRec; - - -#include "loadppm.c" - -GLenum doubleBuffer; -int imageSizeX, imageSizeY; -char *fileName = 0; -PPMImage *image; -cRec cList[50]; -vertexRec vList[5]; -int cCount, cIndex[2], cStep; -GLenum op = OP_NOOP; - - -static void DrawImage(void) -{ - - glRasterPos2i(0, 0); - glDrawPixels(image->sizeX, image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, - image->data); - - glFlush(); - if (doubleBuffer) { - glutSwapBuffers(); - } - - glRasterPos2i(0, 0); - glDrawPixels(image->sizeX, image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, - image->data); -} - -static void DrawPoint(void) -{ - int i; - - glColor3f(1.0, 0.0, 1.0); - glPointSize(3.0); - glBegin(GL_POINTS); - for (i = 0; i < cCount; i++) { - glVertex2f(cList[i].x, cList[i].y); - } - glEnd(); - - glFlush(); - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static void InitVList(void) -{ - - vList[0].x = 0.0; - vList[0].y = 0.0; - vList[0].dX = 0.0; - vList[0].dY = 0.0; - vList[0].tX = 0.0; - vList[0].tY = 0.0; - - vList[1].x = (float)imageSizeX; - vList[1].y = 0.0; - vList[1].dX = 0.0; - vList[1].dY = 0.0; - vList[1].tX = 1.0; - vList[1].tY = 0.0; - - vList[2].x = (float)imageSizeX; - vList[2].y = (float)imageSizeY; - vList[2].dX = 0.0; - vList[2].dY = 0.0; - vList[2].tX = 1.0; - vList[2].tY = 1.0; - - vList[3].x = 0.0; - vList[3].y = (float)imageSizeY; - vList[3].dX = 0.0; - vList[3].dY = 0.0; - vList[3].tX = 0.0; - vList[3].tY = 1.0; - - vList[4].x = cList[0].x; - vList[4].y = cList[0].y; - vList[4].dX = (cList[1].x - cList[0].x) / STEPCOUNT; - vList[4].dY = (cList[1].y - cList[0].y) / STEPCOUNT; - vList[4].tX = cList[0].x / (float)imageSizeX; - vList[4].tY = cList[0].y / (float)imageSizeY; -} - -static void ScaleImage(int sizeX, int sizeY) -{ - GLubyte *buf; - - buf = (GLubyte *)malloc(3*sizeX*sizeY); - gluScaleImage(GL_RGB, image->sizeX, image->sizeY, GL_UNSIGNED_BYTE, - image->data, sizeX, sizeY, GL_UNSIGNED_BYTE, buf); - free(image->data); - image->data = buf; - image->sizeX = sizeX; - image->sizeY = sizeY; -} - -static void SetPoint(int x, int y) -{ - - cList[cCount].x = (float)x; - cList[cCount].y = (float)y; - cCount++; -} - -static void Stretch(void) -{ - - glBegin(GL_TRIANGLES); - glTexCoord2f(vList[0].tX, vList[0].tY); - glVertex2f(vList[0].x, vList[0].y); - glTexCoord2f(vList[1].tX, vList[1].tY); - glVertex2f(vList[1].x, vList[1].y); - glTexCoord2f(vList[4].tX, vList[4].tY); - glVertex2f(vList[4].x, vList[4].y); - glEnd(); - - glBegin(GL_TRIANGLES); - glTexCoord2f(vList[1].tX, vList[1].tY); - glVertex2f(vList[1].x, vList[1].y); - glTexCoord2f(vList[2].tX, vList[2].tY); - glVertex2f(vList[2].x, vList[2].y); - glTexCoord2f(vList[4].tX, vList[4].tY); - glVertex2f(vList[4].x, vList[4].y); - glEnd(); - - glBegin(GL_TRIANGLES); - glTexCoord2f(vList[2].tX, vList[2].tY); - glVertex2f(vList[2].x, vList[2].y); - glTexCoord2f(vList[3].tX, vList[3].tY); - glVertex2f(vList[3].x, vList[3].y); - glTexCoord2f(vList[4].tX, vList[4].tY); - glVertex2f(vList[4].x, vList[4].y); - glEnd(); - - glBegin(GL_TRIANGLES); - glTexCoord2f(vList[3].tX, vList[3].tY); - glVertex2f(vList[3].x, vList[3].y); - glTexCoord2f(vList[0].tX, vList[0].tY); - glVertex2f(vList[0].x, vList[0].y); - glTexCoord2f(vList[4].tX, vList[4].tY); - glVertex2f(vList[4].x, vList[4].y); - glEnd(); - - glFlush(); - if (doubleBuffer) { - glutSwapBuffers(); - } - - if (++cStep < STEPCOUNT) { - vList[4].x += vList[4].dX; - vList[4].y += vList[4].dY; - } else { - cIndex[0] = cIndex[1]; - cIndex[1] = cIndex[1] + 1; - if (cIndex[1] == cCount) { - cIndex[1] = 0; - } - vList[4].dX = (cList[cIndex[1]].x - cList[cIndex[0]].x) / STEPCOUNT; - vList[4].dY = (cList[cIndex[1]].y - cList[cIndex[0]].y) / STEPCOUNT; - cStep = 0; - } -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - free(image->data); - exit(1); - case 32: - if (cCount > 1) { - InitVList(); - cIndex[0] = 0; - cIndex[1] = 1; - cStep = 0; - glEnable(GL_TEXTURE_2D); - op = OP_STRETCH; - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Mouse(int button, int state, int mouseX, int mouseY) -{ - - if (state != GLUT_DOWN) - return; - - if (op == OP_STRETCH) { - glDisable(GL_TEXTURE_2D); - cCount = 0; - op = OP_DRAWIMAGE; - } else { - SetPoint(mouseX, imageSizeY-mouseY); - op = OP_DRAWPOINT; - } - - glutPostRedisplay(); -} - -static void Animate(void) -{ - static double t0 = -1.; - double t, dt; - t = glutGet(GLUT_ELAPSED_TIME) / 1000.; - if (t0 < 0.) - t0 = t; - dt = t - t0; - - if (dt < 1./60.) - return; - - t0 = t; - - switch (op) { - case OP_STRETCH: - Stretch(); - break; - case OP_DRAWPOINT: - DrawPoint(); - break; - case OP_DRAWIMAGE: - DrawImage(); - break; - default: - break; - } -} - -static GLenum 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; - } else if (strcmp(argv[i], "-f") == 0) { - if (i+1 >= argc || argv[i+1][0] == '-') { - printf("-f (No file name).\n"); - return GL_FALSE; - } else { - fileName = argv[++i]; - } - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -#if !defined(GLUTCALLBACK) -#define GLUTCALLBACK -#endif - -static void GLUTCALLBACK glut_post_redisplay_p(void) -{ - glutPostRedisplay(); -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - if (fileName == 0) { - printf("No image file.\n"); - exit(1); - } - - image = LoadPPM(fileName); - - /* changed powf and logf to pow and log -Brian */ - imageSizeX = (int)pow(2.0, (float)((int)(log(image->sizeX)/log(2.0)))); - imageSizeY = (int)pow(2.0, (float)((int)(log(image->sizeY)/log(2.0)))); - - glutInitWindowPosition(0, 0); glutInitWindowSize( imageSizeX, imageSizeY); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Stretch") == GL_FALSE) { - exit(1); - } - - glViewport(0, 0, imageSizeX, imageSizeY); - gluOrtho2D(0, imageSizeX, 0, imageSizeY); - glClearColor(0.0, 0.0, 0.0, 0.0); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - - ScaleImage(imageSizeX, imageSizeY); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - 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_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, 3, image->sizeX, image->sizeY, 0, - GL_RGB, GL_UNSIGNED_BYTE, (unsigned char *)image->data); - - cCount = 0; - cIndex[0] = 0; - cIndex[1] = 0; - cStep = 0; - op = OP_DRAWIMAGE; - - glutKeyboardFunc(Key); - glutMouseFunc(Mouse); - glutDisplayFunc(Animate); - glutIdleFunc(glut_post_redisplay_p); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/texture.c b/progs/samples/texture.c deleted file mode 100644 index 7ee41eef28b..00000000000 --- a/progs/samples/texture.c +++ /dev/null @@ -1,474 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <math.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#include "loadppm.c" - -GLenum doubleBuffer; - -char *texFileName = 0; -PPMImage *image; - -float *minFilter, *magFilter, *sWrapMode, *tWrapMode; -float decal[] = {GL_DECAL}; -float modulate[] = {GL_MODULATE}; -float repeat[] = {GL_REPEAT}; -float clamp[] = {GL_CLAMP}; -float nr[] = {GL_NEAREST}; -float ln[] = {GL_LINEAR}; -float nr_mipmap_nr[] = {GL_NEAREST_MIPMAP_NEAREST}; -float nr_mipmap_ln[] = {GL_NEAREST_MIPMAP_LINEAR}; -float ln_mipmap_nr[] = {GL_LINEAR_MIPMAP_NEAREST}; -float ln_mipmap_ln[] = {GL_LINEAR_MIPMAP_LINEAR}; -GLint sphereMap[] = {GL_SPHERE_MAP}; - -GLenum doSphere = GL_FALSE; -float xRotation = 0.0, yRotation = 0.0, zTranslate = -3.125; - -GLint cube; -float c[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 - } - } -}; -static float n[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 - } -}; -static float t[6][4][2] = { - { - { - 1.1, 1.1 - }, - { - -0.1, 1.1 - }, - { - -0.1, -0.1 - }, - { - 1.1, -0.1 - } - }, - { - { - 1.1, 1.1 - }, - { - -0.1, 1.1 - }, - { - -0.1, -0.1 - }, - { - 1.1, -0.1 - } - }, - { - { - -0.1, 1.1 - }, - { - 1.1, 1.1 - }, - { - 1.1, -0.1 - }, - { - -0.1, -0.1 - } - }, - { - { - 1.1, 1.1 - }, - { - -0.1, 1.1 - }, - { - -0.1, -0.1 - }, - { - 1.1, -0.1 - } - }, - { - { - 1.1, 1.1 - }, - { - -0.1, 1.1 - }, - { - -0.1, -0.1 - }, - { - 1.1, -0.1 - } - }, - { - { - 1.1, 1.1 - }, - { - -0.1, 1.1 - }, - { - -0.1, -0.1 - }, - { - 1.1, -0.1 - } - }, -}; - -static void BuildCube(void) -{ - GLint i; - - glNewList(cube, GL_COMPILE); - for (i = 0; i < 6; i++) { - glBegin(GL_POLYGON); - glNormal3fv(n[i]); glTexCoord2fv(t[i][0]); glVertex3fv(c[i][0]); - glNormal3fv(n[i]); glTexCoord2fv(t[i][1]); glVertex3fv(c[i][1]); - glNormal3fv(n[i]); glTexCoord2fv(t[i][2]); glVertex3fv(c[i][2]); - glNormal3fv(n[i]); glTexCoord2fv(t[i][3]); glVertex3fv(c[i][3]); - glEnd(); - } - glEndList(); -} - -static void BuildLists(void) -{ - - cube = glGenLists(1); - BuildCube(); -} - -static void Init(void) -{ - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image->sizeX, image->sizeY, - GL_RGB, GL_UNSIGNED_BYTE, image->data); - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, decal); - glEnable(GL_TEXTURE_2D); - - glFrontFace(GL_CCW); - glCullFace(GL_FRONT); - glEnable(GL_CULL_FACE); - - BuildLists(); - - glClearColor(0.0, 0.0, 0.0, 0.0); - - magFilter = nr; - minFilter = nr; - sWrapMode = repeat; - tWrapMode = repeat; -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(145.0, 1.0, 0.01, 1000); - glMatrixMode(GL_MODELVIEW); -} - -static void Key2(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_LEFT: - yRotation -= 0.5; - break; - case GLUT_KEY_RIGHT: - yRotation += 0.5; - break; - case GLUT_KEY_UP: - xRotation -= 0.5; - break; - case GLUT_KEY_DOWN: - xRotation += 0.5; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - - case 'T': - zTranslate += 0.25; - break; - case 't': - zTranslate -= 0.25; - break; - - case 's': - doSphere = !doSphere; - if (doSphere) { - glTexGeniv(GL_S, GL_TEXTURE_GEN_MODE, sphereMap); - glTexGeniv(GL_T, GL_TEXTURE_GEN_MODE, sphereMap); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - } else { - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - } - break; - - case '0': - magFilter = nr; - break; - case '1': - magFilter = ln; - break; - case '2': - minFilter = nr; - break; - case '3': - minFilter = ln; - break; - case '4': - minFilter = nr_mipmap_nr; - break; - case '5': - minFilter = nr_mipmap_ln; - break; - case '6': - minFilter = ln_mipmap_nr; - break; - case '7': - minFilter = ln_mipmap_ln; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - - glClear(GL_COLOR_BUFFER_BIT); - - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, sWrapMode); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, tWrapMode); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilter); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter); - - glPushMatrix(); - - glTranslatef(0.0, 0.0, zTranslate); - glRotatef(xRotation, 1, 0, 0); - glRotatef(yRotation, 0, 1, 0); - glCallList(cube); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum 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; - } else if (strcmp(argv[i], "-f") == 0) { - if (i+1 >= argc || argv[i+1][0] == '-') { - printf("-f (No file name).\n"); - return GL_FALSE; - } else { - texFileName = argv[++i]; - } - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - if (texFileName == 0) { - printf("No image file.\n"); - exit(1); - } - - image = LoadPPM(texFileName); - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Texture Test") == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/tkmap.c b/progs/samples/tkmap.c deleted file mode 100644 index 3ded79cacaa..00000000000 --- a/progs/samples/tkmap.c +++ /dev/null @@ -1,71 +0,0 @@ - -enum { - COLOR_BLACK = 0, - COLOR_RED, - COLOR_GREEN, - COLOR_YELLOW, - COLOR_BLUE, - COLOR_MAGENTA, - COLOR_CYAN, - COLOR_WHITE -}; - -static float RGBMap[9][3] = { - {0, 0, 0}, - {1, 0, 0}, - {0, 1, 0}, - {1, 1, 0}, - {0, 0, 1}, - {1, 0, 1}, - {0, 1, 1}, - {1, 1, 1}, - {0.5, 0.5, 0.5} -}; - -static void SetColor(int c) -{ - if (glutGet(GLUT_WINDOW_RGBA)) - glColor3fv(RGBMap[c]); - else - glIndexf(c); -} - -static void InitMap(void) -{ - int i; - - if (rgb) - return; - - for (i = 0; i < 9; i++) - glutSetColor(i, RGBMap[i][0], RGBMap[i][1], RGBMap[i][2]); -} - -static void SetFogRamp(int density, int startIndex) -{ - int fogValues, colorValues; - int i, j, k; - float intensity; - - fogValues = 1 << density; - colorValues = 1 << startIndex; - for (i = 0; i < colorValues; i++) { - for (j = 0; j < fogValues; j++) { - k = i * fogValues + j; - intensity = (i * fogValues + j * colorValues) / 255.0; - glutSetColor(k, intensity, intensity, intensity); - } - } -} - -static void SetGreyRamp(void) -{ - int i; - float intensity; - - for (i = 0; i < 255; i++) { - intensity = i / 255.0; - glutSetColor(i, intensity, intensity, intensity); - } -} - diff --git a/progs/samples/tri.c b/progs/samples/tri.c deleted file mode 100644 index 700325132ef..00000000000 --- a/progs/samples/tri.c +++ /dev/null @@ -1,403 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define SOLID 1 -#define LINE 2 -#define POINT 3 - - -GLenum rgb, doubleBuffer, windType; -GLint windW, windH; - -GLenum dithering = GL_TRUE; -GLenum showVerticies = GL_TRUE; -GLenum hideBottomTriangle = GL_FALSE; -GLenum outline = GL_TRUE; -GLenum culling = GL_FALSE; -GLenum winding = GL_FALSE; -GLenum face = GL_FALSE; -GLenum state = SOLID; -GLenum aaMode = GL_FALSE; -GLenum shade = GL_TRUE; - -GLint color1, color2, color3; - -float zRotation = 90.0; -float zoom = 1.0; - -float boxA[3] = {-100, -100, 0}; -float boxB[3] = { 100, -100, 0}; -float boxC[3] = { 100, 100, 0}; -float boxD[3] = {-100, 100, 0}; - -float p0[3] = {-125,-80, 0}; -float p1[3] = {-125, 80, 0}; -float p2[3] = { 172, 0, 0}; - - -#include "tkmap.c" - -static void Init(void) -{ - float r, g, b; - float percent1, percent2; - GLint i, j; - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glLineStipple(1, 0xF0F0); - - glEnable(GL_SCISSOR_TEST); - - if (!rgb) { - for (j = 0; j <= 12; j++) { - if (j <= 6) { - percent1 = j / 6.0; - r = 1.0 - 0.8 * percent1; - g = 0.2 + 0.8 * percent1; - b = 0.2; - } else { - percent1 = (j - 6) / 6.0; - r = 0.2; - g = 1.0 - 0.8 * percent1; - b = 0.2 + 0.8 * percent1; - } - glutSetColor(j+18, r, g, b); - for (i = 0; i < 16; i++) { - percent2 = i / 15.0; - glutSetColor(j*16+1+32, r*percent2, g*percent2, b*percent2); - } - } - color1 = 18; - color2 = 24; - color3 = 30; - } -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; -} - -static void Key2(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_LEFT: - zRotation += 0.5; - break; - case GLUT_KEY_RIGHT: - zRotation -= 0.5; - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 'Z': - zoom *= 0.75; - break; - case 'z': - zoom /= 0.75; - if (zoom > 10) { - zoom = 10; - } - break; - case '1': - glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); - break; - case '2': - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - break; - case '3': - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - case '4': - state = POINT; - break; - case '5': - state = LINE; - break; - case '6': - state = SOLID; - break; - case '7': - culling = !culling; - break; - case '8': - winding = !winding; - break; - case '9': - face = !face; - break; - case 'v': - showVerticies = !showVerticies; - break; - case 's': - shade = !shade; - (shade) ? glShadeModel(GL_SMOOTH) : glShadeModel(GL_FLAT); - break; - case 'h': - hideBottomTriangle = !hideBottomTriangle; - break; - case 'o': - outline = !outline; - break; - case 'm': - dithering = !dithering; - break; - case '0': - aaMode = !aaMode; - if (aaMode) { - glEnable(GL_POLYGON_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - if (!rgb) { - color1 = 32; - color2 = 128; - color3 = 224; - } - } else { - glDisable(GL_POLYGON_SMOOTH); - glDisable(GL_BLEND); - if (!rgb) { - color1 = 18; - color2 = 24; - color3 = 30; - } - } - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void BeginPrim(void) -{ - - switch (state) { - case SOLID: - glBegin(GL_POLYGON); - break; - case LINE: - glBegin(GL_LINE_LOOP); - break; - case POINT: - glBegin(GL_POINTS); - break; - default: - break; - } -} - -static void EndPrim(void) -{ - - glEnd(); -} - -static void Draw(void) -{ - float scaleX, scaleY; - - glViewport(0, 0, windW, windH); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-175, 175, -175, 175); - glMatrixMode(GL_MODELVIEW); - - glScissor(0, 0, windW, windH); - - (culling) ? glEnable(GL_CULL_FACE) : glDisable(GL_CULL_FACE); - (winding) ? glFrontFace(GL_CCW) : glFrontFace(GL_CW); - (face) ? glCullFace(GL_FRONT) : glCullFace(GL_BACK); - - (dithering) ? glEnable(GL_DITHER) : glDisable(GL_DITHER); - - glClear(GL_COLOR_BUFFER_BIT); - - SetColor(COLOR_GREEN); - glBegin(GL_LINE_LOOP); - glVertex3fv(boxA); - glVertex3fv(boxB); - glVertex3fv(boxC); - glVertex3fv(boxD); - glEnd(); - - if (!hideBottomTriangle) { - glPushMatrix(); - - glScalef(zoom, zoom, zoom); - glRotatef(zRotation, 0, 0, 1); - - SetColor(COLOR_BLUE); - BeginPrim(); - glVertex3fv(p0); - glVertex3fv(p1); - glVertex3fv(p2); - EndPrim(); - - if (showVerticies) { - (rgb) ? glColor3fv(RGBMap[COLOR_RED]) : glIndexf(color1); - glRectf(p0[0]-2, p0[1]-2, p0[0]+2, p0[1]+2); - (rgb) ? glColor3fv(RGBMap[COLOR_GREEN]) : glIndexf(color2); - glRectf(p1[0]-2, p1[1]-2, p1[0]+2, p1[1]+2); - (rgb) ? glColor3fv(RGBMap[COLOR_BLUE]) : glIndexf(color3); - glRectf(p2[0]-2, p2[1]-2, p2[0]+2, p2[1]+2); - } - - glPopMatrix(); - } - - scaleX = (float)(windW - 20) / 2 / 175 * (175 - 100) + 10; - scaleY = (float)(windH - 20) / 2 / 175 * (175 - 100) + 10; - - glViewport(scaleX, scaleY, windW-2*scaleX, windH-2*scaleY); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-100, 100, -100, 100); - glMatrixMode(GL_MODELVIEW); - - glScissor(scaleX, scaleY, windW-2*scaleX, windH-2*scaleY); - - glPushMatrix(); - - glScalef(zoom, zoom, zoom); - glRotatef(zRotation, 0,0,1); - - glPointSize(10); - glLineWidth(5); - glEnable(GL_POINT_SMOOTH); - glEnable(GL_LINE_STIPPLE); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - SetColor(COLOR_RED); - BeginPrim(); - (rgb) ? glColor3fv(RGBMap[COLOR_RED]) : glIndexf(color1); - glVertex3fv(p0); - (rgb) ? glColor3fv(RGBMap[COLOR_GREEN]) : glIndexf(color2); - glVertex3fv(p1); - (rgb) ? glColor3fv(RGBMap[COLOR_BLUE]) : glIndexf(color3); - glVertex3fv(p2); - EndPrim(); - - glPointSize(1); - glLineWidth(1); - glDisable(GL_POINT_SMOOTH); - glDisable(GL_LINE_STIPPLE); - glBlendFunc(GL_ONE, GL_ZERO); - - if (outline) { - SetColor(COLOR_WHITE); - glBegin(GL_LINE_LOOP); - glVertex3fv(p0); - glVertex3fv(p1); - glVertex3fv(p2); - glEnd(); - } - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - 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; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - windW = 600; - windH = 300; - glutInitWindowPosition(0, 0); glutInitWindowSize( windW, windH); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Triangle Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(Key2); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/samples/wave.c b/progs/samples/wave.c deleted file mode 100644 index 396a6943e33..00000000000 --- a/progs/samples/wave.c +++ /dev/null @@ -1,619 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 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 (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) 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. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - -#ifndef PI -#define PI 3.14159265358979323846 -#endif - -#define GETCOORD(frame, x, y) (&(theMesh.coords[frame*theMesh.numCoords+(x)+(y)*(theMesh.widthX+1)])) -#define GETFACET(frame, x, y) (&(theMesh.facets[frame*theMesh.numFacets+(x)+(y)*theMesh.widthX])) - - -GLenum rgb, doubleBuffer; - -#include "tkmap.c" - -GLint colorIndexes1[3]; -GLint colorIndexes2[3]; -GLenum clearMask = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT; - -GLenum smooth = GL_FALSE; -GLenum lighting = GL_TRUE; -GLenum depth = GL_TRUE; -GLenum stepMode = GL_FALSE; -GLenum spinMode = GL_FALSE; -GLint contouring = 0; - -GLint widthX, widthY; -GLint checkerSize; -float height; - -GLint frames, curFrame = 0, nextFrame = 0; - -struct facet { - float color[3]; - float normal[3]; -}; -struct coord { - float vertex[3]; - float normal[3]; -}; -struct mesh { - GLint widthX, widthY; - GLint numFacets; - GLint numCoords; - GLint frames; - struct coord *coords; - struct facet *facets; -} theMesh; - -GLubyte contourTexture1[] = { - 255, 255, 255, 255, - 255, 255, 255, 255, - 255, 255, 255, 255, - 127, 127, 127, 127, -}; -GLubyte contourTexture2[] = { - 255, 255, 255, 255, - 255, 127, 127, 127, - 255, 127, 127, 127, - 255, 127, 127, 127, -}; - -#if !defined(GLUTCALLBACK) -#define GLUTCALLBACK -#endif - - -static void GLUTCALLBACK glut_post_redisplay_p(void) -{ - static double t0 = -1.; - double t, dt; - t = glutGet(GLUT_ELAPSED_TIME) / 1000.; - if (t0 < 0.) - t0 = t; - dt = t - t0; - - if (dt < 1./30.) - return; - - t0 = t; - - glutPostRedisplay(); -} - -static void Animate(void) -{ - struct coord *coord; - struct facet *facet; - float *lastColor; - float *thisColor; - GLint i, j; - - glClear(clearMask); - - if (nextFrame || !stepMode) { - curFrame++; - } - if (curFrame >= theMesh.frames) { - curFrame = 0; - } - - if ((nextFrame || !stepMode) && spinMode) { - glRotatef(5.0, 0.0, 0.0, 1.0); - } - nextFrame = 0; - - for (i = 0; i < theMesh.widthX; i++) { - glBegin(GL_QUAD_STRIP); - lastColor = NULL; - for (j = 0; j < theMesh.widthY; j++) { - facet = GETFACET(curFrame, i, j); - if (!smooth && lighting) { - glNormal3fv(facet->normal); - } - if (lighting) { - if (rgb) { - thisColor = facet->color; - glColor3fv(facet->color); - } else { - thisColor = facet->color; - glMaterialfv(GL_FRONT_AND_BACK, GL_COLOR_INDEXES, - facet->color); - } - } else { - if (rgb) { - thisColor = facet->color; - glColor3fv(facet->color); - } else { - thisColor = facet->color; - glIndexf(facet->color[1]); - } - } - - if (!lastColor || (thisColor[0] != lastColor[0] && smooth)) { - if (lastColor) { - glEnd(); - glBegin(GL_QUAD_STRIP); - } - coord = GETCOORD(curFrame, i, j); - if (smooth && lighting) { - glNormal3fv(coord->normal); - } - glVertex3fv(coord->vertex); - - coord = GETCOORD(curFrame, i+1, j); - if (smooth && lighting) { - glNormal3fv(coord->normal); - } - glVertex3fv(coord->vertex); - } - - coord = GETCOORD(curFrame, i, j+1); - if (smooth && lighting) { - glNormal3fv(coord->normal); - } - glVertex3fv(coord->vertex); - - coord = GETCOORD(curFrame, i+1, j+1); - if (smooth && lighting) { - glNormal3fv(coord->normal); - } - glVertex3fv(coord->vertex); - - lastColor = thisColor; - } - glEnd(); - } - - glFlush(); - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static void SetColorMap(void) -{ - static float green[3] = {0.2, 1.0, 0.2}; - static float red[3] = {1.0, 0.2, 0.2}; - float *color = 0, percent; - GLint *indexes = 0, entries, i, j; - - entries = glutGet(GLUT_WINDOW_COLORMAP_SIZE); - - colorIndexes1[0] = 1; - colorIndexes1[1] = 1 + (GLint)((entries - 1) * 0.3); - colorIndexes1[2] = (GLint)((entries - 1) * 0.5); - colorIndexes2[0] = 1 + (GLint)((entries - 1) * 0.5); - colorIndexes2[1] = 1 + (GLint)((entries - 1) * 0.8); - colorIndexes2[2] = entries - 1; - - for (i = 0; i < 2; i++) { - switch (i) { - case 0: - color = green; - indexes = colorIndexes1; - break; - case 1: - color = red; - indexes = colorIndexes2; - break; - } - - for (j = indexes[0]; j < indexes[1]; j++) { - percent = 0.2 + 0.8 * (j - indexes[0]) / - (float)(indexes[1] - indexes[0]); - glutSetColor(j, percent*color[0], percent*color[1], - percent*color[2]); - } - for (j=indexes[1]; j<=indexes[2]; j++) { - percent = (j - indexes[1]) / (float)(indexes[2] - indexes[1]); - glutSetColor(j, percent*(1-color[0])+color[0], - percent*(1-color[1])+color[1], - percent*(1-color[2])+color[2]); - } - } -} - -static void InitMesh(void) -{ - struct coord *coord; - struct facet *facet; - float dp1[3], dp2[3]; - float *pt1, *pt2, *pt3; - float angle, d, x, y; - GLint numFacets, numCoords, frameNum, i, j; - - theMesh.widthX = widthX; - theMesh.widthY = widthY; - theMesh.frames = frames; - - numFacets = widthX * widthY; - numCoords = (widthX + 1) * (widthY + 1); - - theMesh.numCoords = numCoords; - theMesh.numFacets = numFacets; - - theMesh.coords = (struct coord *)malloc(frames*numCoords* - sizeof(struct coord)); - theMesh.facets = (struct facet *)malloc(frames*numFacets* - sizeof(struct facet)); - if (theMesh.coords == NULL || theMesh.facets == NULL) { - printf("Out of memory.\n"); - exit(1); - } - - for (frameNum = 0; frameNum < frames; frameNum++) { - for (i = 0; i <= widthX; i++) { - x = i / (float)widthX; - for (j = 0; j <= widthY; j++) { - y = j / (float)widthY; - - d = sqrt(x*x+y*y); - if (d == 0.0) { - d = 0.0001; - } - angle = 2 * PI * d + (2 * PI / frames * frameNum); - - coord = GETCOORD(frameNum, i, j); - - coord->vertex[0] = x - 0.5; - coord->vertex[1] = y - 0.5; - coord->vertex[2] = (height - height * d) * cos(angle); - - coord->normal[0] = -(height / d) * x * ((1 - d) * 2 * PI * - sin(angle) + cos(angle)); - coord->normal[1] = -(height / d) * y * ((1 - d) * 2 * PI * - sin(angle) + cos(angle)); - coord->normal[2] = -1; - - d = 1.0 / sqrt(coord->normal[0]*coord->normal[0]+ - coord->normal[1]*coord->normal[1]+1); - coord->normal[0] *= d; - coord->normal[1] *= d; - coord->normal[2] *= d; - } - } - for (i = 0; i < widthX; i++) { - for (j = 0; j < widthY; j++) { - facet = GETFACET(frameNum, i, j); - if (((i/checkerSize)%2)^(j/checkerSize)%2) { - if (rgb) { - facet->color[0] = 1.0; - facet->color[1] = 0.2; - facet->color[2] = 0.2; - } else { - facet->color[0] = colorIndexes1[0]; - facet->color[1] = colorIndexes1[1]; - facet->color[2] = colorIndexes1[2]; - } - } else { - if (rgb) { - facet->color[0] = 0.2; - facet->color[1] = 1.0; - facet->color[2] = 0.2; - } else { - facet->color[0] = colorIndexes2[0]; - facet->color[1] = colorIndexes2[1]; - facet->color[2] = colorIndexes2[2]; - } - } - pt1 = GETCOORD(frameNum, i, j)->vertex; - pt2 = GETCOORD(frameNum, i, j+1)->vertex; - pt3 = GETCOORD(frameNum, i+1, j+1)->vertex; - - dp1[0] = pt2[0] - pt1[0]; - dp1[1] = pt2[1] - pt1[1]; - dp1[2] = pt2[2] - pt1[2]; - - dp2[0] = pt3[0] - pt2[0]; - dp2[1] = pt3[1] - pt2[1]; - dp2[2] = pt3[2] - pt2[2]; - - facet->normal[0] = dp1[1] * dp2[2] - dp1[2] * dp2[1]; - facet->normal[1] = dp1[2] * dp2[0] - dp1[0] * dp2[2]; - facet->normal[2] = dp1[0] * dp2[1] - dp1[1] * dp2[0]; - - d = 1.0 / sqrt(facet->normal[0]*facet->normal[0]+ - facet->normal[1]*facet->normal[1]+ - facet->normal[2]*facet->normal[2]); - - facet->normal[0] *= d; - facet->normal[1] *= d; - facet->normal[2] *= d; - } - } - } -} - -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 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.28, 0.38, 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, 1.0, 0.2, 1.0}; - static float lmodel_ambient[] = {1.0, 1.0, 1.0, 1.0}; - static float lmodel_twoside[] = {GL_TRUE}; - - glMatrixMode(GL_PROJECTION); - gluPerspective(90.0, 1.0, 0.5, 10.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_TWO_SIDE, lmodel_twoside); - 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); - if (rgb) { - glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); - } - - if (rgb) { - glEnable(GL_COLOR_MATERIAL); - } else { - SetColorMap(); - } -} - -static void InitTexture(void) -{ - - 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); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); -} - -static void Init(void) -{ - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glShadeModel(GL_FLAT); - - glFrontFace(GL_CW); - - glEnable(GL_DEPTH_TEST); - - InitMaterials(); - InitTexture(); - InitMesh(); - - glMatrixMode(GL_MODELVIEW); - glTranslatef(0.0, 0.4, -1.8); - glScalef(2.0, 2.0, 2.0); - glRotatef(-35.0, 1.0, 0.0, 0.0); - glRotatef(35.0, 0.0, 0.0, 1.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case 'c': - contouring++; - if (contouring == 1) { - static GLfloat map[4] = {0, 0, 20, 0}; - - glTexImage2D(GL_TEXTURE_2D, 0, 3, 4, 4, 0, GL_LUMINANCE, - GL_UNSIGNED_BYTE, (GLvoid *)contourTexture1); - 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, map); - glTexGenfv(GL_T, GL_OBJECT_PLANE, map); - glEnable(GL_TEXTURE_2D); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - } else if (contouring == 2) { - static GLfloat map[4] = {0, 0, 20, 0}; - - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glPushMatrix(); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTexGenfv(GL_S, GL_EYE_PLANE, map); - glTexGenfv(GL_T, GL_EYE_PLANE, map); - glPopMatrix(); - } else { - contouring = 0; - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glDisable(GL_TEXTURE_2D); - } - break; - case 's': - smooth = !smooth; - if (smooth) { - glShadeModel(GL_SMOOTH); - } else { - glShadeModel(GL_FLAT); - } - break; - case 'l': - lighting = !lighting; - if (lighting) { - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - if (rgb) { - glEnable(GL_COLOR_MATERIAL); - } - } else { - glDisable(GL_LIGHTING); - glDisable(GL_LIGHT0); - if (rgb) { - glDisable(GL_COLOR_MATERIAL); - } - } - break; - case 'd': - depth = !depth; - if (depth) { - glEnable(GL_DEPTH_TEST); - clearMask |= GL_DEPTH_BUFFER_BIT; - } else { - glDisable(GL_DEPTH_TEST); - clearMask &= ~GL_DEPTH_BUFFER_BIT; - } - break; - case 32: - stepMode = !stepMode; - if (stepMode) { - glutIdleFunc(0); - } else { - glutIdleFunc(glut_post_redisplay_p); - } - break; - case 'n': - if (stepMode) { - nextFrame = 1; - } - break; - case 'a': - spinMode = !spinMode; - break; - default: - return; - } - glutPostRedisplay(); -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_TRUE; - frames = 10; - widthX = 10; - widthY = 10; - checkerSize = 2; - height = 0.2; - - 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 if (strcmp(argv[i], "-grid") == 0) { - if (i+2 >= argc || argv[i+1][0] == '-' || argv[i+2][0] == '-') { - printf("-grid (No numbers).\n"); - return GL_FALSE; - } else { - widthX = atoi(argv[++i]); - widthY = atoi(argv[++i]); - } - } else if (strcmp(argv[i], "-size") == 0) { - if (i+1 >= argc || argv[i+1][0] == '-') { - printf("-checker (No number).\n"); - return GL_FALSE; - } else { - checkerSize = atoi(argv[++i]); - } - } else if (strcmp(argv[i], "-wave") == 0) { - if (i+1 >= argc || argv[i+1][0] == '-') { - printf("-wave (No number).\n"); - return GL_FALSE; - } else { - height = atof(argv[++i]); - } - } else if (strcmp(argv[i], "-frames") == 0) { - if (i+1 >= argc || argv[i+1][0] == '-') { - printf("-frames (No number).\n"); - return GL_FALSE; - } else { - frames = atoi(argv[++i]); - } - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_DEPTH; - type |= (rgb) ? GLUT_RGB : GLUT_INDEX; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("Wave Demo") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Animate); - glutIdleFunc(glut_post_redisplay_p); - glutMainLoop(); - return 0; -} |