Compare commits
	
		
			241 Commits
		
	
	
		
			mesa-10.2.
			...
			mesa_4_0_3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 4266ec91fe | ||
|  | 8a5bdd826a | ||
|  | 20cbbf8459 | ||
|  | 2847895a03 | ||
|  | 79d05b5649 | ||
|  | a0ad8d5a8a | ||
|  | 1a9198f118 | ||
|  | dd8fbed413 | ||
|  | 972cc7827f | ||
|  | 263d8ff8e3 | ||
|  | 363c8b9048 | ||
|  | eb7b122807 | ||
|  | 6306085c69 | ||
|  | 7e20f99f81 | ||
|  | a79f7f8838 | ||
|  | d1d4f6bd34 | ||
|  | 640f61ba13 | ||
|  | 07e3f72bf8 | ||
|  | d06d24f497 | ||
|  | 3fa786c175 | ||
|  | 984bb590df | ||
|  | 67c5effe5c | ||
|  | fbe488cb76 | ||
|  | dbd36a0ca0 | ||
|  | 076870f384 | ||
|  | c1fba8241b | ||
|  | 690798ae3b | ||
|  | 89e91fcc9a | ||
|  | d5a8eeaeeb | ||
|  | b118f433e1 | ||
|  | fbbb780e1f | ||
|  | 9429860763 | ||
|  | 531af3f17f | ||
|  | 054f415f45 | ||
|  | b1b4382283 | ||
|  | 3aef708b56 | ||
|  | d63730d087 | ||
|  | 2469fc9672 | ||
|  | 86ab257a46 | ||
|  | d7e7d8ec74 | ||
|  | fe4edce605 | ||
|  | b0f477e5dd | ||
|  | ce4c38fe2e | ||
|  | 09760a9563 | ||
|  | d7abab5c67 | ||
|  | e900da049b | ||
|  | 9def08ad3d | ||
|  | 978731595d | ||
|  | 00e5cb4120 | ||
|  | b338ee265a | ||
|  | 8d3f06a565 | ||
|  | 0d1785c6db | ||
|  | 79474dc528 | ||
|  | 43e90c0053 | ||
|  | c748b6c3d8 | ||
|  | 2c109c15e0 | ||
|  | 22fcb86432 | ||
|  | 70c5d68365 | ||
|  | 1b0fcb2124 | ||
|  | 6668d2fcb1 | ||
|  | e3c2d6bd0c | ||
|  | 655e0ad0c1 | ||
|  | d99fa29b94 | ||
|  | 7229861a46 | ||
|  | f5130e3473 | ||
|  | a5ed2460e9 | ||
|  | e2130abf8f | ||
|  | bf6a6f1d59 | ||
|  | abd10c99e5 | ||
|  | c3bc8a9c1e | ||
|  | aa5698e8ed | ||
|  | cf4c9ada0d | ||
|  | 13c751a1c2 | ||
|  | 2af71a9acf | ||
|  | 5e0316f1a8 | ||
|  | 2366fb3b89 | ||
|  | 4ad3511865 | ||
|  | 44f6191507 | ||
|  | aaf89c1cc7 | ||
|  | 7350dd7395 | ||
|  | 972815c414 | ||
|  | 0bb0b4df73 | ||
|  | e07b4252ad | ||
|  | b8855675ca | ||
|  | 6bf823ac2d | ||
|  | af3f3080f9 | ||
|  | bb47715320 | ||
|  | cef9cdf3bb | ||
|  | 4493f41577 | ||
|  | a4f3130a7f | ||
|  | b2c3daa875 | ||
|  | 3d6951c097 | ||
|  | db0ed6252b | ||
|  | e6c59e8d0c | ||
|  | 378fcdb818 | ||
|  | cd3f5d807a | ||
|  | c3e908891c | ||
|  | fdbaf407a7 | ||
|  | 5a86d3852c | ||
|  | 96d0be5cf2 | ||
|  | 0bd26c3c55 | ||
|  | 9f7053e913 | ||
|  | 9fa55ac457 | ||
|  | 101092ea11 | ||
|  | da648d9afd | ||
|  | 7a3b7c9687 | ||
|  | 55f8fcba10 | ||
|  | 7419597f2f | ||
|  | e784671997 | ||
|  | c2165e799c | ||
|  | 40519b3eb3 | ||
|  | dcda68de33 | ||
|  | 8308199e5d | ||
|  | 3b029b0c7d | ||
|  | bff7677bd9 | ||
|  | 41796ecc25 | ||
|  | 94865a95b1 | ||
|  | b8b23d4552 | ||
|  | 3245cfdf41 | ||
|  | 69e043158a | ||
|  | 3ce17ffb84 | ||
|  | 33b483f882 | ||
|  | 308a036114 | ||
|  | 4c97c84f7e | ||
|  | d7bde06097 | ||
|  | a00292bcfe | ||
|  | 7d729ffb58 | ||
|  | aeb6c0af5e | ||
|  | 41110917d7 | ||
|  | a58b1ed0a3 | ||
|  | 27b503cab8 | ||
|  | d38cdd33d0 | ||
|  | 851acc6ea7 | ||
|  | 6115d784a7 | ||
|  | fcca385bec | ||
|  | 06743cf365 | ||
|  | b372b40bd1 | ||
|  | 3e3bd40614 | ||
|  | 3fb6d0bfde | ||
|  | b36acc0423 | ||
|  | 287d6127d2 | ||
|  | a8290d3a95 | ||
|  | b26f972618 | ||
|  | 5bd6bad38d | ||
|  | 1ae3437156 | ||
|  | 93665403aa | ||
|  | 04613cb0bc | ||
|  | e0a30e9d2d | ||
|  | fd3da01ec3 | ||
|  | 40bbb8b7f3 | ||
|  | 00b7772bda | ||
|  | 0fc4d7e46d | ||
|  | 1261fed2c3 | ||
|  | 4f4f542bd7 | ||
|  | 550169ab62 | ||
|  | ad83c33a4d | ||
|  | a340c4f6ef | ||
|  | 781f27575c | ||
|  | 08e126fba6 | ||
|  | b03241a552 | ||
|  | e4efc983bd | ||
|  | 785bfd0c1e | ||
|  | a0e4612f49 | ||
|  | f6e1618f97 | ||
|  | 3a450fb4b0 | ||
|  | 43daa03ac1 | ||
|  | cb69912494 | ||
|  | b4518ee5d4 | ||
|  | 6ef05c2817 | ||
|  | 26d31abd87 | ||
|  | 7702362bda | ||
|  | 5141607357 | ||
|  | a9e14e7bb9 | ||
|  | 5196a16629 | ||
|  | 7f37280955 | ||
|  | 986b7ec195 | ||
|  | 9012185ae8 | ||
|  | 2edf851932 | ||
|  | 1703b67ee0 | ||
|  | 9342fbe46e | ||
|  | 2f88c5fbd4 | ||
|  | dc35f387ca | ||
|  | 597ec4040c | ||
|  | 51aa3d2f30 | ||
|  | 0c1f42ef29 | ||
|  | 06ae58eebb | ||
|  | d8deb468f7 | ||
|  | 4aac60f691 | ||
|  | e20d35d74a | ||
|  | ed26c2d950 | ||
|  | 95681b4a85 | ||
|  | 17a5135fee | ||
|  | 69b71bc1ab | ||
|  | 9f6957e702 | ||
|  | bf78731523 | ||
|  | c527df81df | ||
|  | ca2315d95b | ||
|  | c4dd9e2a03 | ||
|  | 34174976c4 | ||
|  | ff23c15bdc | ||
|  | eb0ce107c7 | ||
|  | bfe6c71b99 | ||
|  | 69f2ff5f38 | ||
|  | f28c19da41 | ||
|  | c132ca9774 | ||
|  | 8ca1772d4a | ||
|  | ff5fe4836a | ||
|  | f88e0898a1 | ||
|  | 3f2eedd634 | ||
|  | 158c7413fb | ||
|  | 0a96860e04 | ||
|  | 37b10249e5 | ||
|  | 589cee71b8 | ||
|  | c6dcd5c4cf | ||
|  | e1ec4771f1 | ||
|  | 917e942fe2 | ||
|  | f427427ca8 | ||
|  | 7ed97d4ef4 | ||
|  | 267b9cc082 | ||
|  | efb678da77 | ||
|  | 32aa05bfd6 | ||
|  | 299a71fe04 | ||
|  | 63da26bd62 | ||
|  | dfb7ebf8a0 | ||
|  | 64681c1f82 | ||
|  | 8c3149f250 | ||
|  | 53e284bda1 | ||
|  | f46ce82219 | ||
|  | 4256cf0175 | ||
|  | 986749a4ea | ||
|  | 07042d164b | ||
|  | 0739d6f158 | ||
|  | 2fd7a602a7 | ||
|  | f97edb4ca3 | ||
|  | 3b0571dd5c | ||
|  | c25f068355 | ||
|  | 3a05f42b28 | ||
|  | 2631c2a2de | ||
|  | b2728086ec | ||
|  | 2e7644f13d | ||
|  | 9c3e7d2294 | 
							
								
								
									
										147
									
								
								Make-config
									
									
									
									
									
								
							
							
						
						
									
										147
									
								
								Make-config
									
									
									
									
									
								
							| @@ -1,13 +1,13 @@ | ||||
| # $Id: Make-config,v 1.51 2001/10/22 22:45:18 brianp Exp $ | ||||
| # $Id: Make-config,v 1.50.2.10 2002/06/10 17:01:30 brianp Exp $ | ||||
|  | ||||
| MESA_MAJOR=4 | ||||
| MESA_MINOR=1 | ||||
| MESA_TINY=0 | ||||
| MESA_MINOR=0 | ||||
| MESA_TINY=3 | ||||
| VERSION=$(MESA_MAJOR).$(MESA_MINOR) | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| #  | ||||
| # Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. | ||||
| # Copyright (C) 1999-2002  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"), | ||||
| @@ -178,6 +178,25 @@ cygnus-linux: | ||||
| 	"MAKELIB = ../bin/mklib.cygnus-linux" \ | ||||
| 	"WLIBS = ../lib/wing32.a -lkernel32 -luser32 -lgdi32" | ||||
|  | ||||
| darwin: | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.dylib" \ | ||||
| 	"GLU_LIB = libGLU.dylib" \ | ||||
| 	"GLUT_LIB = libglut.dylib" \ | ||||
| 	"GLW_LIB = libGLw.dylib" \ | ||||
| 	"OSMESA_LIB = libOSMesa.dylib" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CPLUSPLUS = cc" \ | ||||
| 	"CFLAGS = -I/usr/X11R6/include -O3 -fPIC -fno-common -ffast-math \ | ||||
|                 -funroll-loops -fexpensive-optimizations -no-cpp-precomp \ | ||||
|                 -dynamic -Ddarwin" \ | ||||
| 	"CCFLAGS = $(CFLAGS)" \ | ||||
| 	"MAKELIB = ../bin/mklib.darwin" \ | ||||
| 	"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread" \ | ||||
| 	"GLU_LIB_DEPS = -L../lib -lGL -lm" \ | ||||
| 	"GLUT_LIB_DEPS = -L../lib -lGLU -lGL \ | ||||
|                        -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm"  | ||||
|  | ||||
| dgux: | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.a" \ | ||||
| @@ -344,7 +363,7 @@ hpux10-gcc-sl: | ||||
|  | ||||
| # For IRIX 4: don't use -fullwarn because it causes too much garbage | ||||
| irix4: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.a" \ | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| @@ -357,7 +376,7 @@ irix4: | ||||
|  | ||||
| # On IRIX 5.3 -sopt causes a problem in drawpixels.c so we don't use it | ||||
| irix5: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.a" \ | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| @@ -385,7 +404,7 @@ irix5-gcc: | ||||
|  | ||||
| # IRIX 5 using Dynamic Shared Objects (DSO) | ||||
| irix5-dso: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.so" \ | ||||
| 	"GLU_LIB = libGLU.so" \ | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| @@ -396,34 +415,46 @@ irix5-dso: | ||||
| 	"MAKELIB = ../bin/mklib.irix5" \ | ||||
| 	"APP_LIB_DEPS = -rpath ../lib -lX11 -lXmu -lXi -lm" | ||||
|  | ||||
| # IRIX 6 32-bit Targets | ||||
| #	Turn Warnings off for these errors (MIPSpro Compiler 7.30) | ||||
| #	1521:   A nonstandard preprocessing directive is used. | ||||
| #	1552:   The variable "" is set but never used. | ||||
| #	C++ | ||||
| #	3262:   The variable "" was declared but never referenced. | ||||
| #	3666:   The variable "" is set but never used. | ||||
| #	Use -v if using pmake to compile files in subdirectories. | ||||
| irix6-o32: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.a" \ | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"OSMESA_LIB = libOSMesa.a" \ | ||||
| 	"LIBDIR = ../lib32" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -DUSE_XSHM -DNO_CONST" \ | ||||
| 	"CPLUSPLUS = CC" \ | ||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -woff 1521,1552 -DUSE_XSHM" \ | ||||
| 	"CCFLAGS = -32 -mips2 -O2 -ansi -woff 3262,3666" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||
| 	"APP_LIB_DEPS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| irix6-o32-dso: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.so" \ | ||||
| 	"GLU_LIB = libGLU.so" \ | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"OSMESA_LIB = libOSMesa.so" \ | ||||
| 	"LIBDIR = ../lib32" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -DUSE_XSHM -DNO_CONST" \ | ||||
| 	"CPLUSPLUS = CC" \ | ||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -woff 1521,1552 -DUSE_XSHM" \ | ||||
| 	"CCFLAGS = -32 -mips2 -O2 -ansi -woff 3262,3666" \ | ||||
| 	"MAKELIB = ../bin/mklib.irix6-32" \ | ||||
| 	"APP_LIB_DEPS = -rpath ../lib -lX11 -lXext -lXmu -lXi -lm" | ||||
| 	"APP_LIB_DEPS = -rpath ../lib32 -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| # For IRIX 6: -woff: | ||||
| #   1209 - controlling expression is constant | ||||
| irix6-n32: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.a" \ | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| @@ -431,20 +462,24 @@ irix6-n32: | ||||
| 	"OSMESA_LIB = libOSMesa.a" \ | ||||
| 	"LIBDIR = ../lib32" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -n32 -mips3 -O3 -ansi -woff 1209,1521" \ | ||||
| 	"CPLUSPLUS = CC" \ | ||||
| 	"CFLAGS = -n32 -mips3 -O3 -ansi -woff 1174,1521,1552 -DUSE_XSHM" \ | ||||
| 	"CCFLAGS = -n32 -mips3 -O3 -ansi -woff 1174,1552" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||
| 	"APP_LIB_DEPS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| irix6-n32-dso: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.so" \ | ||||
| 	"GLU_LIB = libGLU.so" \ | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"OSMESA_LIB = libOSMesa.a" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"OSMESA_LIB = libOSMesa.so" \ | ||||
| 	"LIBDIR = ../lib32" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -n32 -mips3 -O3 -ansi -DUSE_XSHM -woff 1185,1521" \ | ||||
| 	"CPLUSPLUS = CC" \ | ||||
| 	"CFLAGS = -n32 -mips3 -O3 -ansi -woff 1174,1521,1552 -DUSE_XSHM" \ | ||||
| 	"CCFLAGS = -n32 -mips3 -O3 -ansi -woff 1174,1552" \ | ||||
| 	"MAKELIB = ../bin/mklib.irix6-n32" \ | ||||
| 	"APP_LIB_DEPS = -rpath ../lib32 -lX11 -lXmu -lXi -lfpe -lm" | ||||
|  | ||||
| @@ -472,7 +507,7 @@ irix6-gcc-n32-sl: | ||||
| #   1474 - declaring a void parameter list with a typedef is nonstandard | ||||
| #   1552 - variable was set but never used | ||||
| irix6-64: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.a" \ | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| @@ -485,7 +520,7 @@ irix6-64: | ||||
| 	"APP_LIB_DEPS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| irix6-64-dso: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.so" \ | ||||
| 	"GLU_LIB = libGLU.so" \ | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| @@ -571,6 +606,32 @@ linux-x86: | ||||
| 		X86/sse_xform3.S X86/sse_xform4.S \ | ||||
| 		X86/sse_normal.S X86/sse_vertex.S" | ||||
|  | ||||
| linux-icc: | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.so" \ | ||||
| 	"GLU_LIB = libGLU.so" \ | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"OSMESA_LIB = libOSMesa.so" \ | ||||
| 	"CC = icc" \ | ||||
| 	"CPLUSPLUS = g++" \ | ||||
| 	"CFLAGS = -O3 -tpp6 -KPIC -D_GCC_LIMITS_H_ -D__GNUC__ -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DPTHREADS -I/usr/X11R6/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lm -lpthread" \ | ||||
| 	"GLU_LIB_DEPS = -L../lib -lGL -lm" \ | ||||
| 	"GLUT_LIB_DEPS = -L../lib -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm" \ | ||||
| 	"APP_LIB_DEPS = -lm" \ | ||||
| 	"ASM_SOURCES = X86/common_x86_asm.S X86/glapi_x86.S \ | ||||
| 		X86/x86_xform2.S X86/x86_xform3.S X86/x86_xform4.S \ | ||||
| 		X86/x86_cliptest.S X86/x86_vertex.S \ | ||||
| 		X86/mmx_blend.S \ | ||||
| 		X86/3dnow_xform1.S X86/3dnow_xform2.S \ | ||||
| 		X86/3dnow_xform3.S X86/3dnow_xform4.S \ | ||||
| 		X86/3dnow_normal.S X86/3dnow_vertex.S \ | ||||
| 		X86/sse_xform1.S X86/sse_xform2.S \ | ||||
| 		X86/sse_xform3.S X86/sse_xform4.S \ | ||||
| 		X86/sse_normal.S X86/sse_vertex.S" | ||||
|  | ||||
| linux-x86-static: | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.a" \ | ||||
| @@ -662,7 +723,7 @@ linux-386-glide: | ||||
| 	"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -L/usr/local/glide/lib -lglide2x -lm -lpthread" \ | ||||
| 	"GLU_LIB_DEPS = -L../lib -lGL -lm" \ | ||||
| 	"GLUT_LIB_DEPS = -L../lib -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm" \ | ||||
| 	"APP_LIB_DEPS = -L/usr/local/glide/lib -lglide2x -lglut -lGLU -lGL" | ||||
| 	"APP_LIB_DEPS = -L/usr/local/glide/lib -lglide2x -lglut -lGLU -lGL -lm" \ | ||||
| 	"ASM_SOURCES = X86/common_x86_asm.S X86/glapi_x86.S \ | ||||
| 		X86/x86_xform2.S X86/x86_xform3.S X86/x86_xform4.S \ | ||||
| 		X86/x86_cliptest.S X86/x86_vertex.S" | ||||
| @@ -682,7 +743,7 @@ linux-386-opt-glide: | ||||
| 	"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -L/usr/local/glide/lib -lglide2x -lm -lpthread" \ | ||||
| 	"GLU_LIB_DEPS = -L../lib -lGL -lm" \ | ||||
| 	"GLUT_LIB_DEPS = -L../lib -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm" \ | ||||
| 	"APP_LIB_DEPS = -lm" \ | ||||
| 	"APP_LIB_DEPS = -L/usr/local/glide/lib -lglide2x -lglut -lGLU -lGL -lm" \ | ||||
| 	"ASM_SOURCES = X86/common_x86_asm.S X86/glapi_x86.S \ | ||||
| 		X86/x86_xform2.S X86/x86_xform3.S X86/x86_xform4.S \ | ||||
| 		X86/x86_cliptest.S X86/x86_vertex.S" | ||||
| @@ -701,7 +762,7 @@ linux-x86-glide: | ||||
| 	"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -L/usr/local/glide/lib -lglide2x -lm -lpthread" \ | ||||
| 	"GLU_LIB_DEPS = -L../lib -lGL -lm" \ | ||||
| 	"GLUT_LIB_DEPS = -L../lib -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm" \ | ||||
| 	"APP_LIB_DEPS = -lm" \ | ||||
| 	"APP_LIB_DEPS = -L/usr/local/glide/lib -lglide2x -lglut -lGLU -lGL -lm" \ | ||||
| 	"ASM_SOURCES = X86/common_x86_asm.S X86/glapi_x86.S \ | ||||
| 		X86/x86_xform2.S X86/x86_xform3.S X86/x86_xform4.S \ | ||||
| 		X86/x86_cliptest.S X86/x86_vertex.S \ | ||||
| @@ -832,7 +893,7 @@ linux-osmesa16: | ||||
| 	"OSMESA16_LIB = libOSMesa16.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CPLUSPLUS = g++" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -Wmissing-prototypes -Wundef -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DPTHREADS -DDEBUG -DMESA_DEBUG -DCHAN_BITS=16 -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -Wall -Wmissing-prototypes -Wundef -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DPTHREADS -DDEBUG -DMESA_DEBUG -DCHAN_BITS=16 -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \ | ||||
| 	"CCFLAGS = $(CFLAGS)" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"GL_LIB_DEPS = -lm -lpthread" \ | ||||
| @@ -844,7 +905,7 @@ linux-osmesa32: | ||||
| 	"OSMESA16_LIB = libOSMesa32.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CPLUSPLUS = g++" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -Wmissing-prototypes -Wundef -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DPTHREADS -DDEBUG -DMESA_DEBUG -DCHAN_BITS=32 -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -Wall -Wmissing-prototypes -Wundef -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DPTHREADS -DDEBUG -DMESA_DEBUG -DCHAN_BITS=32 -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \ | ||||
| 	"CCFLAGS = $(CFLAGS)" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"GL_LIB_DEPS = -lm -lpthread" \ | ||||
| @@ -1177,6 +1238,7 @@ sunos5: | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"OSMESA_LIB = libOSMesa.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CPLUSPLUS = CC" \ | ||||
| 	"CFLAGS = -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"APP_LIB_DEPS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
| @@ -1189,6 +1251,7 @@ sunos5-sl: | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"OSMESA_LIB = libOSMesa.so" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CPLUSPLUS = CC" \ | ||||
| 	"CFLAGS = -KPIC -Xa -O -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||
| 	"APP_LIB_DEPS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
| @@ -1201,6 +1264,7 @@ sunos5-ultra: | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"OSMESA_LIB = libOSMesa.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CPLUSPLUS = CC" \ | ||||
| 	"CFLAGS = -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"APP_LIB_DEPS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
| @@ -1213,6 +1277,7 @@ sunos5-ultra-sl: | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"OSMESA_LIB = libOSMesa.so" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CPLUSPLUS = CC" \ | ||||
| 	"CFLAGS = -KPIC -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||
| 	"APP_LIB_DEPS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
| @@ -1418,7 +1483,7 @@ vistra: | ||||
| # -woff 1521 = "nonstandard preprocessing directive is used" | ||||
| # -woff 3496 = "bitwise operator precedence" | ||||
| irix-debug: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.a" \ | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| @@ -1431,7 +1496,7 @@ irix-debug: | ||||
| 	"APP_LIB_DEPS = -rpath ../lib32 -lX11 -lXext -lXmu -lXi -lfpe -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| DEBUG: | ||||
| 	pmake $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.a" \ | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| @@ -1452,13 +1517,31 @@ linux-debug: | ||||
| 	"OSMESA_LIB = libOSMesa.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CPLUSPLUS = g++" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -Wmissing-prototypes -Wundef -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DPTHREADS -DDEBUG -DMESA_DEBUG -DSVGA -I/usr/include/glide -DFX -DMESA_TRACE" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -Wmissing-prototypes -Wundef -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DPTHREADS -DDEBUG -DMESA_DEBUG -DSVGA_foo -I/usr/include/glide -DFX_foo -DMESA_TRACE" \ | ||||
| 	"CCFLAGS = $(CFLAGS)" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -L/usr/local/glide/lib -lglide2x -lvga" \ | ||||
| 	"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread" \ | ||||
| 	"GLU_LIB_DEPS = -L../lib -lGL -lm" \ | ||||
| 	"GLUT_LIB_DEPS = -L../lib -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm" \ | ||||
| 	"APP_LIB_DEPS = -lglut -lGLU -lGL -L/usr/local/glide/lib -lglide2x" | ||||
| 	"APP_LIB_DEPS = -lglut -lGLU -lGL" | ||||
|  | ||||
| linux-x11-debug: | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
| 	"GL_LIB = libGL.so" \ | ||||
| 	"GLU_LIB = libGLU.so" \ | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"OSMESA_LIB = libOSMesa.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CPLUSPLUS = g++" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -Wmissing-prototypes -Wundef -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DPTHREADS -DDEBUG -DMESA_DEBUG -DMESA_TRACE" \ | ||||
| 	"CCFLAGS = $(CFLAGS)" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread" \ | ||||
| 	"GLU_LIB_DEPS = -L../lib -lGL -lm" \ | ||||
| 	"GLUT_LIB_DEPS = -L../lib -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm" \ | ||||
| 	"APP_LIB_DEPS = -lglut -lGLU -lGL" | ||||
|  | ||||
|  | ||||
| linux-static-debug: | ||||
| 	$(MAKE) $(MFLAGS) -f Makefile.X11 targets \ | ||||
|   | ||||
							
								
								
									
										40
									
								
								Makefile.X11
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								Makefile.X11
									
									
									
									
									
								
							| @@ -1,9 +1,9 @@ | ||||
| # $Id: Makefile.X11,v 1.57 2001/10/22 22:45:18 brianp Exp $ | ||||
| # $Id: Makefile.X11,v 1.56.2.10 2002/06/24 20:44:58 brianp Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  4.1 | ||||
| # Version:  4.0.3 | ||||
| #  | ||||
| # Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. | ||||
| # Copyright (C) 1999-2002  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"), | ||||
| @@ -42,6 +42,7 @@ default: | ||||
| 	@echo "  make bsdos4               for BSD/OS 4.x, dynamic libraries" | ||||
| 	@echo "  make cygnus               for Win95/NT using Cygnus-Win32" | ||||
| 	@echo "  make cygnus-linux         for Win95/NT using Cygnus-Win32 under Linux" | ||||
| 	@echo "  make darwin               for Darwin - Mac OS X" | ||||
| 	@echo "  make dgux                 for Data General" | ||||
| 	@echo "  make freebsd              for FreeBSD systems with GCC" | ||||
| 	@echo "  make freebsd-386          for FreeBSD systems with GCC, w/ Intel assembly" | ||||
| @@ -86,6 +87,7 @@ default: | ||||
| 	@echo "  make linux-sparc-ultra    for UltraSparc systems, make ELF shared libs" | ||||
| 	@echo "  make linux-osmesa16       for 16-bit/channel OSMesa" | ||||
| 	@echo "  make linux-osmesa32       for 32-bit/channel OSMesa" | ||||
| 	@echo "  make linux-icc            for Linux with the Intel C/C++ compiler" | ||||
| 	@echo "  make lynxos               for LynxOS systems with GCC" | ||||
| 	@echo "  make macintosh            for Macintosh" | ||||
| 	@echo "  make machten-2.2          for Macs w/ MachTen 2.2 (68k w/ FPU)" | ||||
| @@ -137,12 +139,12 @@ default: | ||||
| # XXX we may have to split up this group of targets into those that | ||||
| # have a C++ compiler and those that don't for the SI-GLU library. | ||||
|  | ||||
| aix aix-sl amix bsdos bsdos4 dgux freebsd freebsd-386 gcc \ | ||||
| aix aix-sl amix bsdos bsdos4 darwin dgux freebsd freebsd-386 gcc \ | ||||
| hpux9 hpux9-sl hpux9-gcc hpux9-gcc-sl \ | ||||
| hpux10 hpux10-sl hpux10-gcc hpux10-gcc-sl \ | ||||
| irix4 irix5 irix5-gcc irix5-dso irix6-o32 irix6-o32-dso \ | ||||
| linux linux-static linux-debug linux-static-debug linux-prof \ | ||||
| linux-x86 linux-x86-static linux-x86-debug \ | ||||
| irix4 irix5 irix5-gcc irix5-dso \ | ||||
| linux linux-static linux-debug linux-x11-debug linux-static-debug linux-prof \ | ||||
| linux-x86 linux-icc linux-x86-static linux-x86-debug \ | ||||
| linux-glide linux-386-glide linux-386-opt-glide \ | ||||
| linux-x86-glide linux-glide-debug linux-glide-prof \ | ||||
| linux-alpha-static linux-alpha \ | ||||
| @@ -171,12 +173,11 @@ sunos5-x11r6-gcc-sl ultrix-gcc unicos unixware uwin vistra: | ||||
| 	if [ -d book     ] ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
|  | ||||
| irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug: | ||||
| irix6-o32 irix6-o32-dso irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug: | ||||
| 	-mkdir lib32 | ||||
| 	if [ -d src      ] ; then touch src/depend      ; fi | ||||
| 	if [ -d src-glu  ] ; then touch src-glu/depend  ; fi | ||||
| 	if [ -d src-glut ] ; then touch src-glut/depend ; fi | ||||
| 	if [ -d src-glut ] ; then touch src-glut/depend ; fi | ||||
| 	if [ -d widgets-sgi ] ; then touch widgets-sgi/depend ; fi | ||||
| 	if [ -d src      ] ; then cd src      ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d src-glu  ] ; then cd src-glu  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| @@ -299,7 +300,6 @@ linux-osmesa16 linux-osmesa32: | ||||
| 	-mkdir lib | ||||
| 	if [ -d src ] ; then touch src/depend ; fi | ||||
| 	if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.OSMesa16 $@ ; fi | ||||
| 	 | ||||
|  | ||||
| # Remove .o files, emacs backup files, etc. | ||||
| clean: | ||||
| @@ -322,20 +322,18 @@ clean: | ||||
|  | ||||
| # Remove everything that can be remade | ||||
| realclean: clean | ||||
| 	-rm -f lib/* | ||||
| 	-rm -fr lib lib32 lib64 | ||||
| 	cd demos       && $(MAKE) -f Makefile.X11 realclean || true | ||||
| 	cd xdemos      && $(MAKE) -f Makefile.X11 realclean || true | ||||
| 	cd book        && $(MAKE) -f Makefile.X11 realclean || true | ||||
| 	cd samples     && $(MAKE) -f Makefile.X11 realclean || true | ||||
| 	cd ggi/demos   && $(MAKE) -f Makefile.X11 realclean || true | ||||
| 	cd src/GGI/default && $(MAKE) -f Makefile.X11 realclean || true | ||||
|  | ||||
|  | ||||
|  | ||||
| DIRECTORY = Mesa-4.0 | ||||
| LIB_NAME = MesaLib-4.0 | ||||
| DEMO_NAME = MesaDemos-4.0 | ||||
| GLU_NAME = MesaGLU-4.0 | ||||
| DIRECTORY = Mesa-4.0.3 | ||||
| LIB_NAME = MesaLib-4.0.3 | ||||
| DEMO_NAME = MesaDemos-4.0.3 | ||||
| GLU_NAME = MesaGLU-4.0.3 | ||||
| GLUT_NAME = GLUT-3.7 | ||||
|  | ||||
|  | ||||
| @@ -380,7 +378,7 @@ LIB_FILES =	\ | ||||
| 	$(DIRECTORY)/include/GL/internal/glcore.h			\ | ||||
| 	$(DIRECTORY)/include/GL/Makefile.in				\ | ||||
| 	$(DIRECTORY)/include/GL/Makefile.am				\ | ||||
| 	$(DIRECTORY)/include/GL/dosmesa.h				\ | ||||
| 	$(DIRECTORY)/include/GL/dmesa.h					\ | ||||
| 	$(DIRECTORY)/include/GL/amesa.h					\ | ||||
| 	$(DIRECTORY)/include/GL/fxmesa.h				\ | ||||
| 	$(DIRECTORY)/include/GL/ggimesa.h				\ | ||||
| @@ -403,6 +401,7 @@ LIB_FILES =	\ | ||||
| 	$(DIRECTORY)/include/GL/xmesa_x.h				\ | ||||
| 	$(DIRECTORY)/include/GL/xmesa_xf86.h				\ | ||||
| 	$(DIRECTORY)/include/GLView.h					\ | ||||
| 	$(DIRECTORY)/include/dmesadxe.h					\ | ||||
| 	$(DIRECTORY)/include/Makefile.in				\ | ||||
| 	$(DIRECTORY)/include/Makefile.am				\ | ||||
| 	$(DIRECTORY)/src/Makefile*					\ | ||||
| @@ -433,6 +432,7 @@ LIB_FILES =	\ | ||||
| 	$(DIRECTORY)/src/windml/tornado/*.cdf				\ | ||||
| 	$(DIRECTORY)/src/windml/man3/*.3				\ | ||||
| 	$(DIRECTORY)/src/windml/man3/*.html				\ | ||||
| 	$(DIRECTORY)/src/DOS/*.[ch]					\ | ||||
| 	$(DIRECTORY)/src/BeOS/*.cpp					\ | ||||
| 	$(DIRECTORY)/src/FX/Makefile.am					\ | ||||
| 	$(DIRECTORY)/src/FX/Makefile.in					\ | ||||
| @@ -581,7 +581,6 @@ OBSOLETE_LIB_FILES = \ | ||||
| 	$(DIRECTORY)/src/D3D/*bat					\ | ||||
| 	$(DIRECTORY)/src/D3D/*DEF					\ | ||||
| 	$(DIRECTORY)/src/DOS/DEPEND.DOS					\ | ||||
| 	$(DIRECTORY)/src/DOS/*.c					\ | ||||
| 	$(DIRECTORY)/src/S3/*.[ch]					\ | ||||
| 	$(DIRECTORY)/src/S3/*.def					\ | ||||
| 	$(DIRECTORY)/src/S3/*.mak					\ | ||||
| @@ -614,6 +613,9 @@ DEMO_FILES =	\ | ||||
| 	$(DIRECTORY)/src-glut/descrip.mms	\ | ||||
| 	$(DIRECTORY)/src-glut/mms_depend	\ | ||||
| 	$(DIRECTORY)/src-glut/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src-glut.dos/*.[ch]	\ | ||||
| 	$(DIRECTORY)/src-glut.dos/Makefile.DJ	\ | ||||
| 	$(DIRECTORY)/src-glut.dos/PC_HW/*.[chS]	\ | ||||
| 	$(DIRECTORY)/images/*			\ | ||||
| 	$(DIRECTORY)/demos/Makefile*		\ | ||||
| 	$(DIRECTORY)/demos/descrip.mms		\ | ||||
|   | ||||
							
								
								
									
										132
									
								
								docs/README.DJ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								docs/README.DJ
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,132 @@ | ||||
| 			Mesa 4.0 DOS/DJGPP Port v1.0 | ||||
| 			~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
|  | ||||
|  | ||||
| Description: | ||||
| ~~~~~~~~~~~~ | ||||
|  | ||||
| Well, guess what... this is the DOS port of MESA 4.0, for DJGPP fans... Whoa! | ||||
|  | ||||
|  | ||||
|  | ||||
| Legal: | ||||
| ~~~~~~ | ||||
|  | ||||
| MESA copyright applies. | ||||
|  | ||||
|  | ||||
|  | ||||
| Installation: | ||||
| ~~~~~~~~~~~~~ | ||||
|  | ||||
| Type "make -f Makefile.DJ" to compile the libraries. Make accepts some options | ||||
| which are passed to compiler: the target cpu (CPU=..., default=`pentium') and | ||||
| X86 specific options (HAVE_X86=1, HAVE_MMX=1, HAVE_SSE=1, HAVE_3DNOW=1). The | ||||
| core library (libGL) requires LFN support during compilation. Also, you must | ||||
| have the DXE2 package (available on SimTel.Net, courtesy of Andrew Zabolotny) | ||||
| installed in order to build the dynamic modules; if you encounter errors, you | ||||
| can fetch a patched version from my web page. | ||||
| The demos are not built automagically (see Pitfalls below). To make them, use | ||||
| one of the following rules: | ||||
| 	Static: | ||||
| 	    gcc -o OUT.exe IN.c -lglut -lglu -lgl | ||||
| 	Dynamic: | ||||
| 	    gcc -o OUT.exe -include dmesadxe.h IN.c -ligl -liglu -liglut -ldl | ||||
| Usage of the dynamic modules requires three things: | ||||
| 	- include DMESADXE.H in one of the sources, so references inside | ||||
| 	  dynamic modules will get resolved (or use `-include' directive) | ||||
| 	- link against import libraries (libIgl*.a) and LIBDL.A, which will do | ||||
| 	  the dynamic linkage job for you | ||||
| 	- put the DXEs somewhere along the library path (LD_LIBRARY_PATH) or | ||||
| 	  in the current directory | ||||
|  | ||||
| Tested on: | ||||
| 	CPU:		Intel Pentium w/ MMX @166 MHz | ||||
| 	Mainboard:	ViA Apollo VP2 w/ 128 MB SDRAM | ||||
| 	Video card:	Matrox Millenium 2064W w/ 2048 kB WRAM, BIOS v3.0 | ||||
| 	DJGPP:		djdev 2.03 + gcc v3.0.3 + make v3.79 | ||||
|  | ||||
|  | ||||
|  | ||||
| libGL (the core): | ||||
| ~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Of course, MESA 4.0 core sources are required. It will probably work with | ||||
| MESA 3.5, but not a chance with earlier versions due to major changes to the | ||||
| MESA driver interface and the directory tree. All should compile succesfully. | ||||
|  | ||||
| The driver has its origins in ddsample.c, written by Brian Paul and found by | ||||
| me in MESA 3.4.2. I touched almost all the functions, changing the coding | ||||
| style :-( Sorry! | ||||
|  | ||||
| Pitfalls: | ||||
| 1. The current version supports only RGB[A] modes, for it made no sense to me | ||||
|    to endorse color-index (aka palette) modes. | ||||
| 2. Single-buffered is not allowed at all. Until I can find a way to use *REAL* | ||||
|    hardware acceleration, it won't get implemented. | ||||
| 3. Another weird "feature" is that buffer width must be multiple of 4 (I'm a | ||||
|    lazy programmer and I found that the easiest way to keep buffer handling at | ||||
|    peak performance ;-). | ||||
|  | ||||
|  | ||||
|  | ||||
| libGLU: | ||||
| ~~~~~~~ | ||||
|  | ||||
| Mesa GLU sources are required. | ||||
|  | ||||
|  | ||||
|  | ||||
| libGLUT (the toolkit): | ||||
| ~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Well, this "skeletal" GLUT implementation is not mine. Thanks should go to | ||||
| Bernhard Tschirren, Mark Kilgard, Brian Paul and probably others (or probably | ||||
| not ;-). I only changed it to be self-standing (Allegro-free). The keyboard, | ||||
| mouse and timer drivers were inspired from an old project of mine (D3Xl) and | ||||
| fixed with some Allegro "infusions"; I deeply thank to Shawn Hargreaves et co. | ||||
|  | ||||
| My keyboard driver used only scancodes, but since GLUT requires ASCII values | ||||
| for keys, I borrowed the translation tables (and maybe more) from Allegro. | ||||
| Ctrl-Alt-Del (plus Ctrl-Alt-End, for Windows users) will shut down the GLUT | ||||
| engine unconditionally: it will raise SIGINT, which in turn will call the | ||||
| destructors (let's hope), thus cleaning up your/my mess ;-) NB: since the | ||||
| DJGPP guys ensured signal handlers won't go beyond program's space (and since | ||||
| dynamic modules shall) the SIGINT can't be hooked (well, it can, but it is | ||||
| useless), therefore you must live with the 'Exiting due to signal SIGINT' | ||||
| message... | ||||
|  | ||||
| The mouse driver is far from complete (lack of positioning, drawing, etc), | ||||
| but is enough to make almost all the demos work. | ||||
|  | ||||
| The timer is pretty versatile for it supports multiple timers with different | ||||
| frequencies. It may not be the most accurate timer in the known universe, but | ||||
| I think it's OK. Take this example: you have timer A with a very high rate, | ||||
| and then you have timer B with very low rate compared to A; now, A ticks OK, | ||||
| but timer B will probably loose precision! | ||||
|  | ||||
| As an addition, stdout and stderr are redirected and dumped upon exit. This | ||||
| means that printf can be safely called during graphics, but all messages come | ||||
| in bulk! A bit of a hack, I know, but I think it's better than to miss them | ||||
| at all. "Borrowed" from RHIDE (Robert Hoehne) or SETEDIT (Salvador Eduardo | ||||
| Tropea)... I'm not sure. | ||||
|  | ||||
| Window creating defaults: 640x480x16 at (0,0), 8-bit stencil, 16-bit accum. | ||||
| However, the video mode is chosen in such a way that first window will fit. | ||||
|  | ||||
|  | ||||
|  | ||||
| History: | ||||
| ~~~~~~~~ | ||||
|  | ||||
| v1.0	mar-2002	initial release | ||||
|  | ||||
|  | ||||
|  | ||||
| Contact: | ||||
| ~~~~~~~~ | ||||
|  | ||||
| Name:   Borca Daniel | ||||
| E-mail: dborca@yahoo.com | ||||
| WWW:    http://www.geocities.com/dborca/ | ||||
| @@ -1,6 +1,6 @@ | ||||
| File: docs/README.WIN32 | ||||
|  | ||||
| Last updated: Oct 15, 2001 - Karl Schultz - kschultz@users.sourceforge.net | ||||
| Last updated: Nov 29, 2001 - Karl Schultz - kschultz@users.sourceforge.net | ||||
|  | ||||
| Quick Start | ||||
|  | ||||
| @@ -52,10 +52,7 @@ Details and Notes | ||||
|   difficult to modify the makefiles to generate them. | ||||
|  | ||||
| - The si-glu sources are used to build the GLU libs.  This was done | ||||
|   mainly to get the better tessellator code.  However the C++ NURBS | ||||
|   code is not built.  If you need NURBS, consider modifying the | ||||
|   makefiles to build the C++ code or try to build the older GLU | ||||
|   code in src-glu. | ||||
|   mainly to get the better tessellator code. | ||||
|  | ||||
| - The osmesa driver builds and should work on Windows as well as | ||||
|   any other platform. | ||||
| @@ -68,11 +65,11 @@ Details and Notes | ||||
|   paths for the rasterizers.  See src/osmesa/osmesa.c for some good | ||||
|   examples. | ||||
|  | ||||
| - There is DirectDraw support in the Windows driver, but I do not | ||||
|   know if it compiles or works.  If you have an application that | ||||
|   does not draw much in a frame, but needs a higher framerate, then | ||||
|   it may pay to turn on the DirectDraw code, since DD often performs | ||||
|   the off-screen to on-screen blit faster than GDI. | ||||
| - There is DirectDraw support in the Windows driver, updated by | ||||
|   Daniel Slater.  You'll need to uncomment the #define DDRAW line | ||||
|   in src/Windows/wmesadef.h and add ddraw.lib to the list of libraries | ||||
|   in src/Makefile.win.  On some systems, you will acheive significantly | ||||
|   higher framerates with DirectDraw. | ||||
|  | ||||
| - Some of the more specialized code like FX drivers, stereo, and | ||||
|   parallel support isn't compiled or tested.  I left much of this | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
|  | ||||
|                        Mesa 4.0 Unix/X11 Information | ||||
|                        Mesa 4.0.3 Unix/X11 Information | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -25,7 +25,7 @@ There are two ways to compile Mesa on Unix/X11 systems: | ||||
|  | ||||
|  | ||||
| The top-level makefile will execute the makefiles in a number of sub- | ||||
| directories.  When finished, the Mesa libraries will be in the Mesa-4.0/lib/ | ||||
| directories.  When finished, the Mesa libraries will be in the Mesa-4.0.3/lib/ | ||||
| directory.  A few GLUT demos in the demos/ directory should be ready to run. | ||||
|  | ||||
| If you also downloaded and unpacked the demos there should be executables | ||||
| @@ -323,4 +323,4 @@ Summary of X-related environment variables: | ||||
|  | ||||
|  | ||||
| ---------------------------------------------------------------------- | ||||
| $Id: README.X11,v 3.8 2001/09/23 16:10:02 brianp Exp $ | ||||
| $Id: README.X11,v 3.8.2.3 2002/04/26 13:54:47 brianp Exp $ | ||||
|   | ||||
							
								
								
									
										22
									
								
								docs/RELNOTES-3.4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								docs/RELNOTES-3.4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
|  | ||||
|                          Mesa 3.4 release notes | ||||
|  | ||||
|                              November 3, 2000 | ||||
|  | ||||
|                              PLEASE READ!!!! | ||||
|  | ||||
|  | ||||
|  | ||||
| Introduction | ||||
| ------------ | ||||
|  | ||||
| Mesa uses an even/odd version number scheme like the Linux kernel. | ||||
| Odd numbered versions (such as 3.3) designate new developmental releases. | ||||
| Even numbered versions (such as 3.4) designate stable releases. | ||||
|  | ||||
| Mesa 3.4 simply fixes bugs found in the Mesa 3.3 release.  For details, | ||||
| see the VERSIONS file. | ||||
|  | ||||
|  | ||||
| ---------------------------------------------------------------------- | ||||
| $Id: RELNOTES-3.4,v 1.1.4.1 2002/03/23 02:36:52 brianp Exp $ | ||||
							
								
								
									
										22
									
								
								docs/RELNOTES-4.0.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								docs/RELNOTES-4.0.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
|  | ||||
|                           Mesa 4.0.1 release notes | ||||
|  | ||||
|                              December 17, 2001 | ||||
|  | ||||
|                               PLEASE READ!!!! | ||||
|  | ||||
|  | ||||
|  | ||||
| Introduction | ||||
| ------------ | ||||
|  | ||||
| Mesa uses an even/odd version number scheme like the Linux kernel. | ||||
| Odd numbered versions (such as 3.3) designate new developmental releases. | ||||
| Even numbered versions (such as 3.4) designate stable releases. | ||||
|  | ||||
| Mesa 4.0.1 only contains bug fixes since version 4.0. | ||||
|  | ||||
| See the docs/VERSIONS file for the list of bug fixes. | ||||
|  | ||||
| ---------------------------------------------------------------------- | ||||
| $Id: RELNOTES-4.0.1,v 1.1.2.2 2001/12/17 19:43:38 brianp Exp $ | ||||
							
								
								
									
										50
									
								
								docs/RELNOTES-4.0.2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								docs/RELNOTES-4.0.2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
|  | ||||
|                           Mesa 4.0.2 release notes | ||||
|  | ||||
|                                April 2, 2002 | ||||
|  | ||||
|                               PLEASE READ!!!! | ||||
|  | ||||
|  | ||||
|  | ||||
| Introduction | ||||
| ------------ | ||||
|  | ||||
| Mesa uses an even/odd version number scheme like the Linux kernel. | ||||
| Odd numbered versions (such as 3.3) designate new developmental releases. | ||||
| Even numbered versions (such as 3.4) designate stable releases. | ||||
|  | ||||
| Mesa 4.0.2 only contains bug fixes and a new DOS driver since version 4.0.1. | ||||
|  | ||||
| See the docs/VERSIONS file for the list of bug fixes. | ||||
|  | ||||
|  | ||||
| Device Drivers | ||||
| -------------- | ||||
|  | ||||
| Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the | ||||
| device driver.  If the driver enables all the ARB extensions which are part | ||||
| of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3".  Otherwise, | ||||
| it'll return "1.2". | ||||
|  | ||||
| A number of Mesa's software drivers haven't been actively maintained for | ||||
| some time.  We rely on volunteers to maintain many of the drivers. | ||||
| Here's the current status of all included drivers: | ||||
|  | ||||
| Driver			Status | ||||
| ----------------------	--------------------- | ||||
| XMesa (Xlib)		implements OpenGL 1.3 | ||||
| OSMesa (off-screen)	implements OpenGL 1.3 | ||||
| FX (3dfx Voodoo1/2)	implements OpenGL 1.3 | ||||
| SVGA			implements OpenGL 1.3 | ||||
| Wind River UGL		implements OpenGL 1.3 | ||||
| Windows/Win32		implements OpenGL 1.3 | ||||
| DOS/DJGPP		implements OpenGL 1.3 (new in Mesa 4.0.2) | ||||
| GGI			needs updating | ||||
| BeOS			needs updating | ||||
| Allegro			needs updating | ||||
| D3D			needs updating | ||||
|  | ||||
|  | ||||
| ---------------------------------------------------------------------- | ||||
| $Id: RELNOTES-4.0.2,v 1.1.2.3 2002/04/01 16:54:11 brianp Exp $ | ||||
							
								
								
									
										52
									
								
								docs/RELNOTES-4.0.3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								docs/RELNOTES-4.0.3
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
|  | ||||
|                           Mesa 4.0.3 release notes | ||||
|  | ||||
|                                June 25, 2002 | ||||
|  | ||||
|                               PLEASE READ!!!! | ||||
|  | ||||
|  | ||||
|  | ||||
| Introduction | ||||
| ------------ | ||||
|  | ||||
| Mesa uses an even/odd version number scheme like the Linux kernel. | ||||
| Odd numbered versions (such as 3.3) designate new developmental releases. | ||||
| Even numbered versions (such as 3.4) designate stable releases. | ||||
|  | ||||
| Mesa 4.0.3 basically just contains bug fixes version 4.0.2. | ||||
|  | ||||
| See the docs/VERSIONS file for the list of bug fixes. | ||||
|  | ||||
| The GGI driver has been updated, thanks to Filip Spacek. | ||||
|  | ||||
|  | ||||
| Device Drivers | ||||
| -------------- | ||||
|  | ||||
| Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the | ||||
| device driver.  If the driver enables all the ARB extensions which are part | ||||
| of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3".  Otherwise, | ||||
| it'll return "1.2". | ||||
|  | ||||
| A number of Mesa's software drivers haven't been actively maintained for | ||||
| some time.  We rely on volunteers to maintain many of the drivers. | ||||
| Here's the current status of all included drivers: | ||||
|  | ||||
| Driver			Status | ||||
| ----------------------	--------------------- | ||||
| XMesa (Xlib)		implements OpenGL 1.3 | ||||
| OSMesa (off-screen)	implements OpenGL 1.3 | ||||
| FX (3dfx Voodoo1/2)	implements OpenGL 1.3 | ||||
| SVGA			implements OpenGL 1.3 | ||||
| Wind River UGL		implements OpenGL 1.3 | ||||
| Windows/Win32		implements OpenGL 1.3 | ||||
| DOS/DJGPP		implements OpenGL 1.3 (new in Mesa 4.0.2) | ||||
| GGI			implements OpenGL 1.3 | ||||
| BeOS			needs updating | ||||
| Allegro			needs updating | ||||
| D3D			needs updating | ||||
|  | ||||
|  | ||||
| ---------------------------------------------------------------------- | ||||
| $Id: RELNOTES-4.0.3,v 1.1.2.3 2002/06/24 20:44:58 brianp Exp $ | ||||
| @@ -1,4 +1,4 @@ | ||||
| $Id: VERSIONS,v 1.74 2001/10/22 22:45:18 brianp Exp $ | ||||
| $Id: VERSIONS,v 1.73.2.29 2002/06/25 15:22:12 brianp Exp $ | ||||
|  | ||||
|  | ||||
| Mesa Version History | ||||
| @@ -899,8 +899,85 @@ Mesa Version History | ||||
| 	- fixed 3DNow! code to not read past end of arrays (Andrew Lewycky) | ||||
|  | ||||
|  | ||||
| 4.1  Month, ??, 2002 | ||||
| 4.0.1  December 17, 2001 | ||||
|     New: | ||||
| 	-  | ||||
| 	- better sub-pixel sample positions for AA triangles (Ray Tice) | ||||
| 	- slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO) | ||||
|     Bug fixes: | ||||
| 	-  | ||||
| 	- added missing break statements in glGet*() for multisample cases | ||||
| 	- fixed uninitialized hash table mutex bug (display lists / texobjs) | ||||
| 	- fixed bad teximage error check conditional (bug 476846) | ||||
| 	- fixed demos readtex.c compilation problem on Windows (Karl Schultz) | ||||
| 	- added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT | ||||
| 	- silence some compiler warnings (gcc 2.96) | ||||
| 	- enable the #define GL_VERSION_1_3 in GL/gl.h | ||||
| 	- added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h | ||||
| 	- fixed glu.h typedef problem found with MSDev 6.0 | ||||
| 	- build libGL.so with -Bsymbolic (fixes bug found with Chromium) | ||||
| 	- added missing 'const' to glXGetContextIDEXT() in glxext.h | ||||
| 	- fixed a few glXGetProcAddress() errors (texture compression, etc) | ||||
| 	- fixed start index bug in compiled vertex arrays (Keith) | ||||
| 	- fixed compilation problems in src/SPARC/glapi_sparc.S | ||||
| 	- fixed triangle strip "parity" bug found in VTK medical1 demo (Keith) | ||||
| 	- use glXGetProcAddressARB in GLUT to avoid extension linking problems | ||||
| 	- provoking vertex of flat-shaded, color-index triangles was wrong | ||||
| 	- fixed a few display list bugs (GLUT walker, molecule, etc) (Keith) | ||||
| 	- glTexParameter didn't flush the vertex buffer (Ray Tice) | ||||
| 	- feedback attributes for glDraw/CopyPixels and glBitmap were wrong | ||||
| 	- fixed bug in normal length caching (ParaView lighting bug) | ||||
| 	- fixed separate_specular color bug found in Chimera (18 Dec 2001) | ||||
|  | ||||
|  | ||||
| 4.0.2  April 2, 2002 | ||||
|     New: | ||||
| 	- New DOS (DJGPP) driver written by Daniel Borca | ||||
| 	- New driver interface functions for TCL drivers (such as Radeon DRI) | ||||
| 	- GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32" | ||||
| 	  if using deep color channels | ||||
| 	- latest GL/glext.h and GL/glxext.h headers from SGI | ||||
|     Bug fixes: | ||||
| 	- GL_BLEND with non-black texture env color wasn't always correct | ||||
| 	- GL_REPLACE with GL_RGB texture format wasn't always correct (alpha) | ||||
| 	- glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken | ||||
| 	- glReadPixels was sometimes mistakenly clipped by the scissor box | ||||
| 	- glDraw/ReadPixels didn't catch all the errors that they should have | ||||
| 	- Fixed 24bpp rendering problem in Windows driver (Karl Schultz) | ||||
| 	- 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c) | ||||
| 	- Fixed 1-bit float->int conversion bug in glDrawPixels(GL_DEPTH_COMP) | ||||
| 	- glColorMask as sometimes effecting glXSwapBuffers() | ||||
| 	- fixed a potential bug in XMesaGarbageCollect() | ||||
| 	- N threads rendering into one window didn't work reliably | ||||
| 	- glCopyPixels didn't work for deep color channels | ||||
| 	- improved 8 -> 16bit/channel texture image conversion (Gerk Huisma) | ||||
| 	- glPopAttrib() didn't correctly restore user clip planes | ||||
| 	- user clip planes failed for some perspective projections (Chromium) | ||||
|     Known bugs: | ||||
| 	- mipmap LOD computation | ||||
|  | ||||
|  | ||||
| 4.0.3  June 25, 2002 | ||||
|     New: | ||||
| 	- updated GL/glext.h file (version 15) | ||||
| 	- corrected MMX blend code (Jose Fonseca) | ||||
| 	- support for software-based alpha planes in Windows driver | ||||
| 	- updated GGI driver (Filip Spacek) | ||||
|     Bug fixes: | ||||
| 	- glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens | ||||
| 	- OSMesaMakeCurrent() didn't recognize buffer size changes | ||||
| 	- assorted conformance fixes for 16-bit/channel rendering | ||||
| 	- texcombine alpha subtraction mode was broken | ||||
| 	- fixed lighting bug with non-uniform scaling and display lists | ||||
| 	- fixed bug when deleting shared display lists | ||||
| 	- disabled SPARC cliptest assembly code (Mesa bug 544665) | ||||
| 	- fixed a couple Solaris compilation/link problems | ||||
| 	- blending clipped glDrawPixels didn't always work | ||||
| 	- glGetTexImage() didn't accept packed pixel types | ||||
| 	- glPixelMapu[is]v() could explode given too large of pixelmap | ||||
| 	- glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT | ||||
| 	- glXCopyContext() could lead to segfaults | ||||
| 	- glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665) | ||||
|     Changes: | ||||
| 	- lots of C++ (g++) code clean-ups | ||||
| 	- lots of T&L updates for the Radeon DRI driver | ||||
|     Known bugs: | ||||
| 	- mipmap LOD computation (fixed for Mesa 4.1) | ||||
|   | ||||
							
								
								
									
										77
									
								
								include/GL/dmesa.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								include/GL/dmesa.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| /* | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP device driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef DMESA_included | ||||
| #define DMESA_included | ||||
|  | ||||
| #define DMESA_MAJOR_VERSION 4 | ||||
| #define DMESA_MINOR_VERSION 0 | ||||
|  | ||||
| typedef struct dmesa_context *DMesaContext; | ||||
| typedef struct dmesa_visual *DMesaVisual; | ||||
| typedef struct dmesa_buffer *DMesaBuffer; | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| DMesaVisual DMesaCreateVisual (GLint width, GLint height, GLint colDepth, | ||||
|                                GLboolean dbFlag, GLint depthSize, | ||||
|                                GLint stencilSize, | ||||
|                                GLint accumSize); | ||||
|  | ||||
| void DMesaDestroyVisual (DMesaVisual v); | ||||
|  | ||||
| DMesaBuffer DMesaCreateBuffer (DMesaVisual visual, | ||||
|                                GLint xpos, GLint ypos, | ||||
|                                GLint width, GLint height); | ||||
|  | ||||
| void DMesaDestroyBuffer (DMesaBuffer b); | ||||
|  | ||||
| DMesaContext DMesaCreateContext (DMesaVisual visual, DMesaContext share); | ||||
|  | ||||
| void DMesaDestroyContext (DMesaContext c); | ||||
|  | ||||
| GLboolean DMesaViewport (DMesaBuffer b, | ||||
|                          GLint xpos, GLint ypos, | ||||
|                          GLint width, GLint height); | ||||
|  | ||||
| GLboolean DMesaMakeCurrent (DMesaContext c, DMesaBuffer b); | ||||
|  | ||||
| void DMesaSwapBuffers (DMesaBuffer b); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @@ -1,10 +1,11 @@ | ||||
| /* $Id: ggimesa.h,v 1.3 2000/02/09 19:03:28 brianp Exp $ */ | ||||
| /* $Id: ggimesa.h,v 1.3.6.1 2002/06/10 15:16:16 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.3 | ||||
|  * Mesa 3-D graphics library GGI bindings (GGIGL [giggle]) | ||||
|  * Version:  4.0 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * Copyright (C) 1998  Uwe Maurer | ||||
|  * Copyrigth (C) 2001 Filip Spacek | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
| @@ -25,34 +26,59 @@ | ||||
| #ifndef GGIMESA_H | ||||
| #define GGIMESA_H | ||||
|  | ||||
|  | ||||
| #define GGIMESA_MAJOR_VERSION 3 | ||||
| #define GGIMESA_MINOR_VERSION 3 | ||||
|  | ||||
| #define GGIMESA_MAJOR_VERSION 4 | ||||
| #define GGIMESA_MINOR_VERSION 0 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "GL/gl.h" | ||||
|  | ||||
|  | ||||
| typedef struct ggi_mesa_context *GGIMesaContext; | ||||
|  | ||||
| #include <ggi/ggi.h> | ||||
| #include "GL/gl.h" | ||||
|    | ||||
| typedef struct ggi_mesa_context *ggi_mesa_context_t; | ||||
|  | ||||
| extern GGIMesaContext GGIMesaCreateContext(void); | ||||
| /* | ||||
|  * Initialize Mesa GGI extension | ||||
|  */ | ||||
| int ggiMesaInit(void); | ||||
| /* | ||||
|  * Clean up Mesa GGI exension | ||||
|  */ | ||||
| int ggiMesaExit(void); | ||||
|  | ||||
| extern void GGIMesaDestroyContext(GGIMesaContext ctx); | ||||
| /* | ||||
|  * Attach Mesa GGI extension to the visual 'vis' | ||||
|  */ | ||||
| int ggiMesaAttach(ggi_visual_t vis); | ||||
| /* | ||||
|  * Detach Mesa GGI extension from the visual 'vis' | ||||
|  */ | ||||
| int ggiMesaDetach(ggi_visual_t vis); | ||||
|  | ||||
| extern void GGIMesaMakeCurrent(GGIMesaContext ctx); | ||||
| int ggiMesaExtendVisual(ggi_visual_t vis, GLboolean alpha_flag, | ||||
| 			GLboolean stereo_flag, GLint depth_size, | ||||
| 			GLint stencil_size, GLint accum_red_size, | ||||
| 			GLint accum_green_size, GLint accum_blue_size, | ||||
| 			GLint accum_alpha_size, GLint num_samples); | ||||
|  | ||||
| extern GGIMesaContext GGIMesaGetCurrentContext(void); | ||||
| /* | ||||
|  * Create a new context capable of displaying on the visual vis. | ||||
|  */ | ||||
| ggi_mesa_context_t ggiMesaCreateContext(ggi_visual_t vis); | ||||
| /* | ||||
|  * Destroy the context 'ctx' | ||||
|  */ | ||||
| void ggiMesaDestroyContext(ggi_mesa_context_t ctx); | ||||
|  | ||||
| extern void GGIMesaSwapBuffers(void); | ||||
| /* | ||||
|  * Make context 'ctx' the current context and bind it to visual 'vis'. | ||||
|  * Note that the context must have been created with respect to that visual. | ||||
|  */ | ||||
| void ggiMesaMakeCurrent(ggi_mesa_context_t ctx, ggi_visual_t vis); | ||||
|  | ||||
| void ggiMesaSwapBuffers(void); | ||||
|  | ||||
| extern int GGIMesaSetVisual(GGIMesaContext ctx, ggi_visual_t vis, | ||||
| 			    GLboolean rgb_flag, GLboolean db_flag); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: gl.h,v 1.59 2001/09/23 16:06:13 brianp Exp $ */ | ||||
| /* $Id: gl.h,v 1.59.2.3 2002/04/26 13:53:09 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  4.0 | ||||
|  * Version:  4.0.3 | ||||
|  * | ||||
|  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2003  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"), | ||||
| @@ -84,7 +84,7 @@ extern "C" { | ||||
|  | ||||
| #define GL_VERSION_1_1   1 | ||||
| #define GL_VERSION_1_2   1 | ||||
| /*#define GL_VERSION_1_3   1  not yet */ | ||||
| #define GL_VERSION_1_3   1 | ||||
| #define GL_ARB_imaging   1 | ||||
|  | ||||
|  | ||||
| @@ -1912,8 +1912,6 @@ GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] ); | ||||
|  | ||||
| GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert ); | ||||
|  | ||||
| GLAPI void GLAPIENTRY glSamplePass( GLenum pass ); | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1) | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -250,10 +250,10 @@ typedef struct GLUquadric GLUquadric; | ||||
| typedef struct GLUtesselator GLUtesselator; | ||||
| #endif | ||||
|  | ||||
| typedef struct GLUnurbs GLUnurbsObj; | ||||
| typedef struct GLUquadric GLUquadricObj; | ||||
| typedef struct GLUtesselator GLUtesselatorObj; | ||||
| typedef struct GLUtesselator GLUtriangulatorObj; | ||||
| typedef GLUnurbs GLUnurbsObj; | ||||
| typedef GLUquadric GLUquadricObj; | ||||
| typedef GLUtesselator GLUtesselatorObj; | ||||
| typedef GLUtesselator GLUtriangulatorObj; | ||||
|  | ||||
| #define GLU_TESS_MAX_COORD 1.0e150 | ||||
|  | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: glx.h,v 1.33 2001/09/24 14:15:58 brianp Exp $ */ | ||||
| /* $Id: glx.h,v 1.33.2.2 2002/04/26 13:53:09 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  4.0 | ||||
|  * Version:  4.0.3 | ||||
|  *  | ||||
|  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2002  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"), | ||||
| @@ -172,8 +172,8 @@ extern "C" { | ||||
| /* | ||||
|  * GLX 1.4 and later: | ||||
|  */ | ||||
| #define GLX_SAMPLE_BUFFERS_SGIS            100000 | ||||
| #define GLX_SAMPLES_SGIS                   100001 | ||||
| #define GLX_SAMPLE_BUFFERS              0x186a0 /*100000*/ | ||||
| #define GLX_SAMPLES                     0x186a1 /*100001*/ | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /* $Id: glx_mangle.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ | ||||
| /* $Id: glx_mangle.h,v 1.1.1.1.8.1 2001/11/09 22:00:26 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.0 | ||||
|  * Version:  4.1 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
| @@ -21,25 +21,6 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: glx_mangle.h,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg | ||||
|  * Initial revision | ||||
|  * | ||||
|  * Revision 3.3  1999/06/21 22:01:00  brianp | ||||
|  * added #ifndef GLX_MANGLE_H stuff, video sync extension functions | ||||
|  * | ||||
|  * Revision 3.2  1998/03/26 02:44:53  brianp | ||||
|  * removed ^M characters | ||||
|  * | ||||
|  * Revision 3.1  1998/03/17 02:41:19  brianp | ||||
|  * updated by Randy Frank | ||||
|  * | ||||
|  * Revision 3.0  1998/02/20 05:04:45  brianp | ||||
|  * initial rev | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef GLX_MANGLE_H | ||||
| #define GLX_MANGLE_H | ||||
|  | ||||
| @@ -69,4 +50,8 @@ | ||||
| #define glXGetVideoSyncSGI mglXGetVideoSyncSGI | ||||
| #define glXWaitVideoSyncSGI mglXWaitVideoSyncSGI | ||||
|  | ||||
| /* GLX 1.4 */ | ||||
| #define glXGetProcAddress mglXGetProcAddress | ||||
|  | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -42,12 +42,16 @@ extern "C" { | ||||
| #ifndef APIENTRY | ||||
| #define APIENTRY | ||||
| #endif | ||||
| #ifndef GLAPI | ||||
| #define GLAPI extern | ||||
| #endif | ||||
|  | ||||
| /*************************************************************/ | ||||
|  | ||||
| /* Header file version number, required by OpenGL ABI for Linux */ | ||||
| /* glxext.h last updated 2001/09/26 */ | ||||
| #define GLX_GLXEXT_VERSION 3 | ||||
| /* glxext.h last updated 2002/03/22 */ | ||||
| /* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */ | ||||
| #define GLX_GLXEXT_VERSION 5 | ||||
|  | ||||
| #ifndef GLX_VERSION_1_3 | ||||
| #define GLX_WINDOW_BIT                     0x00000001 | ||||
| @@ -113,6 +117,9 @@ extern "C" { | ||||
| #define GLX_SAMPLES                        100001 | ||||
| #endif | ||||
|  | ||||
| #ifndef GLX_ARB_get_proc_address | ||||
| #endif | ||||
|  | ||||
| #ifndef GLX_ARB_multisample | ||||
| #define GLX_SAMPLE_BUFFERS_ARB             100000 | ||||
| #define GLX_SAMPLES_ARB                    100001 | ||||
| @@ -276,7 +283,6 @@ extern "C" { | ||||
| /*************************************************************/ | ||||
|  | ||||
| #ifndef GLX_ARB_get_proc_address | ||||
| /* XXX Added void parameter to silence many, many warnings (BrianP) */ | ||||
| typedef void (*__GLXextFuncPtr)(void); | ||||
| #endif | ||||
|  | ||||
| @@ -348,6 +354,14 @@ typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigne | ||||
| typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); | ||||
| #endif | ||||
|  | ||||
| #ifndef GLX_VERSION_1_4 | ||||
| #define GLX_VERSION_1_4 1 | ||||
| #ifdef GLX_GLXEXT_PROTOTYPES | ||||
| extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *); | ||||
| #endif /* GLX_GLXEXT_PROTOTYPES */ | ||||
| typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); | ||||
| #endif | ||||
|  | ||||
| #ifndef GLX_ARB_get_proc_address | ||||
| #define GLX_ARB_get_proc_address 1 | ||||
| #ifdef GLX_GLXEXT_PROTOTYPES | ||||
| @@ -356,6 +370,10 @@ extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); | ||||
| typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName); | ||||
| #endif | ||||
|  | ||||
| #ifndef GLX_ARB_multisample | ||||
| #define GLX_ARB_multisample 1 | ||||
| #endif | ||||
|  | ||||
| #ifndef GLX_SGIS_multisample | ||||
| #define GLX_SGIS_multisample 1 | ||||
| #endif | ||||
| @@ -413,13 +431,13 @@ typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSou | ||||
| #ifdef GLX_GLXEXT_PROTOTYPES | ||||
| extern Display * glXGetCurrentDisplayEXT (void); | ||||
| extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *); | ||||
| extern GLXContextID glXGetContextIDEXT (GLXContext); | ||||
| extern GLXContextID glXGetContextIDEXT (const GLXContext); | ||||
| extern GLXContext glXImportContextEXT (Display *, GLXContextID); | ||||
| extern void glXFreeContextEXT (Display *, GLXContext); | ||||
| #endif /* GLX_GLXEXT_PROTOTYPES */ | ||||
| typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void); | ||||
| typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value); | ||||
| typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (GLXContext context); | ||||
| typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); | ||||
| typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID); | ||||
| typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context); | ||||
| #endif | ||||
| @@ -554,14 +572,33 @@ typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode); | ||||
| #define GLX_SGIX_visual_select_group 1 | ||||
| #endif | ||||
|  | ||||
| #ifndef GLX_GLX_OML_swap_method | ||||
| #define GLX_GLX_OML_swap_method 1 | ||||
| #ifndef GLX_OML_swap_method | ||||
| #define GLX_OML_swap_method 1 | ||||
| #endif | ||||
|  | ||||
| #ifndef GLX_GLX_OML_sync_control | ||||
| #define GLX_GLX_OML_sync_control 1 | ||||
| #if defined(__STDC_VERSION__) | ||||
| #if __STDC_VERSION__ >= 199901L | ||||
| /* Include ISO C99 integer types for OML_sync_control; need a better test */ | ||||
| #include <inttypes.h> | ||||
|  | ||||
| #ifndef GLX_OML_sync_control | ||||
| #define GLX_OML_sync_control 1 | ||||
| #ifdef GLX_GLXEXT_PROTOTYPES | ||||
| extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *); | ||||
| extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *); | ||||
| extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t); | ||||
| extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *); | ||||
| extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *); | ||||
| #endif /* GLX_GLXEXT_PROTOTYPES */ | ||||
| typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc); | ||||
| typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator); | ||||
| typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); | ||||
| typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc); | ||||
| typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc); | ||||
| #endif | ||||
|  | ||||
| #endif /* C99 version test */ | ||||
| #endif /* STDC test */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: osmesa.h,v 1.9 2001/09/23 16:06:13 brianp Exp $ */ | ||||
| /* $Id: osmesa.h,v 1.9.2.1 2002/04/26 13:53:09 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  4.0 | ||||
|  * Version:  4.0.3 | ||||
|  *  | ||||
|  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2002  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"), | ||||
| @@ -64,7 +64,7 @@ extern "C" { | ||||
|  | ||||
| #define OSMESA_MAJOR_VERSION 4 | ||||
| #define OSMESA_MINOR_VERSION 0 | ||||
| #define OSMESA_PATCH_VERSION 0 | ||||
| #define OSMESA_PATCH_VERSION 3 | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: wmesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ | ||||
| /* $Id: wmesa.h,v 1.1.1.1.8.1 2002/04/23 18:24:41 kschultz Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -24,8 +24,17 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: wmesa.h,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg | ||||
|  * Initial revision | ||||
|  * Revision 1.1.1.1.8.1  2002/04/23 18:24:41  kschultz | ||||
|  * Fix up alpha buffer handling for Windows. | ||||
|  * - add two new Pixel Format Descriptors that do not have alpha bits to | ||||
|  * mirror the two that do. | ||||
|  * - add logic to wglChoosePixelFormat to match PFD's with respect to alpha. | ||||
|  * - Create/clear software alpha buffer as required. | ||||
|  * Now a wgl or GLUT program can control the creation of a software alpha | ||||
|  * buffer via the PFD or GLUT parms, respectively. | ||||
|  * | ||||
|  * Revision 1.1.1.1  1999/08/19 00:55:40  jtg | ||||
|  * Imported sources | ||||
|  * | ||||
|  * Revision 3.2  1999/01/03 02:54:45  brianp | ||||
|  * updated per Ted Jump | ||||
| @@ -101,13 +110,17 @@ typedef struct wmesa_context *WMesaContext; | ||||
|  *                    GL_FALSE = color index mode | ||||
|  *         db_flag - GL_TRUE = double-buffered, | ||||
|  *                   GL_FALSE = single buffered | ||||
|  *         alpha_flag - GL_TRUE = create software alpha buffer, | ||||
|  *                      GL_FALSE = no software alpha buffer | ||||
|  * | ||||
|  * Note: Indexed mode requires double buffering under Windows. | ||||
|  * | ||||
|  * Return:  a WMesa_context or NULL if error. | ||||
|  */ | ||||
| extern WMesaContext WMesaCreateContext(HWND hWnd,HPALETTE* pPal, | ||||
|                                        GLboolean rgb_flag,GLboolean db_flag); | ||||
|                                        GLboolean rgb_flag, | ||||
|                                        GLboolean db_flag, | ||||
|                                        GLboolean alpha_flag); | ||||
|  | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: xmesa.h,v 1.12 2001/09/23 16:06:13 brianp Exp $ */ | ||||
| /* $Id: xmesa.h,v 1.12.2.2 2002/04/26 13:53:09 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  4.0 | ||||
|  * Version:  4.0.3 | ||||
|  *  | ||||
|  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2003  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"), | ||||
| @@ -365,6 +365,15 @@ extern GLboolean XMesaSetFXmode( GLint mode ); | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Reallocate the back/depth/stencil/accum/etc/ buffers associated with | ||||
|  * buffer <b> if its size has changed. | ||||
|  * | ||||
|  * New in Mesa 4.0.2 | ||||
|  */ | ||||
| extern void XMesaResizeBuffers( XMesaBuffer b ); | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| # $Id: Makefile.win,v 1.5 2001/10/04 19:13:36 kschultz Exp $ | ||||
| # $Id: Makefile.win,v 1.5.2.2 2002/04/15 22:14:09 kschultz Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  3.5 | ||||
| @@ -67,34 +67,64 @@ SRCS = \ | ||||
| 	geartrain.c \ | ||||
| 	glinfo.c \ | ||||
| 	gloss.c \ | ||||
| 	gltestperf.c \ | ||||
| 	glutfx.c \ | ||||
| 	isosurf.c \ | ||||
| 	lodbias.c \ | ||||
| 	morph3d.c \ | ||||
| 	teapot.c | ||||
| 	multiarb.c \ | ||||
| 	occlude.c \ | ||||
| 	paltex.c \ | ||||
| 	pixeltex.c \ | ||||
| 	pointblast.c \ | ||||
| 	ray.c \ | ||||
| 	readpix.c \ | ||||
| 	reflect.c \ | ||||
| 	renormal.c \ | ||||
| 	shadowtex.c \ | ||||
| 	spectex.c \ | ||||
| 	stex3d.c \ | ||||
| 	teapot.c \ | ||||
| 	terrain.c \ | ||||
| 	tessdemo.c \ | ||||
| 	texcyl.c \ | ||||
| 	texdown.c \ | ||||
| 	texenv.c \ | ||||
| 	texobj.c \ | ||||
| 	trispd.c \ | ||||
| 	tunnel.c \ | ||||
| 	tunnel2.c \ | ||||
| 	winpos.c | ||||
|  | ||||
| CXXSRCS = \ | ||||
| 	rain.cxx | ||||
|  | ||||
| OSMESASRCS = osdemo.c | ||||
|  | ||||
| IPERSSRCS = ipers.c | ||||
| IPERSEXES = $(IPERSSRCS:.c=.exe) | ||||
| !include "../mesawin32.mak" | ||||
|  | ||||
| ##### TARGETS ##### | ||||
|  | ||||
| clean:: | ||||
|  | ||||
| realclean:: | ||||
| clobber:: | ||||
| 	@del readtex.c readtex.h | ||||
|  | ||||
| targets: readtex.c readtex.h $(PROGS) | ||||
|  | ||||
| # remove comments when we get non-osmesa pgm working | ||||
| $(EXES) : $*.obj | ||||
| $(EXES) : $*.obj readtex.c readtex.h | ||||
| 	@echo $@ | ||||
| 	$(link) -out:$@ $** /LIBPATH:$(LIBDIR) $(LIBS) | ||||
| 	$(link) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS) | ||||
|  | ||||
| $(OSMESAEXES) : $*.obj | ||||
| 	@echo $@ | ||||
| 	$(link) $(lcommon) -out:$@ $** /LIBPATH:$(LIBDIR) $(LIBS) $(EXTRALIBS) | ||||
| 	$(link) $(lcommon) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS) $(EXTRALIBS) | ||||
|  | ||||
| $(IPERSEXES) : $*.obj | ||||
| 	@echo $@ | ||||
| 	$(link) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS) winmm.lib | ||||
|  | ||||
| readtex.c: | ||||
| 	@copy ../util/readtex.c . | ||||
| 	-copy ..\util\readtex.c . | ||||
|  | ||||
| readtex.h: | ||||
| 	@copy ../util/readtex.c . | ||||
|  | ||||
| 	-copy ..\util\readtex.h . | ||||
| @@ -11,7 +11,7 @@ | ||||
| #include <math.h> | ||||
| #include <time.h> | ||||
|  | ||||
| #ifdef WIN32 | ||||
| #if defined (WIN32)|| defined(_WIN32) | ||||
| #include <windows.h> | ||||
| #include <mmsystem.h> | ||||
| #endif | ||||
|   | ||||
| @@ -40,7 +40,7 @@ | ||||
| static GLfloat Xrot = 0, Yrot = -30, Zrot = 0; | ||||
| static GLboolean Anim = GL_TRUE; | ||||
| static GLint Bias = 0, BiasStepSign = +1; /* ints avoid fp precision problem */ | ||||
| static GLint BiasMin = -200, BiasMax = 500; | ||||
| static GLint BiasMin = -400, BiasMax = 400; | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -192,6 +192,8 @@ static void SpecialKey( int key, int x, int y ) | ||||
| static void Init( void ) | ||||
| { | ||||
|    const char *exten = (const char *) glGetString(GL_EXTENSIONS); | ||||
|    GLfloat maxBias; | ||||
|  | ||||
|    if (!strstr(exten, "GL_EXT_texture_lod_bias")) { | ||||
|       printf("Sorry, GL_EXT_texture_lod_bias not supported by this renderer.\n"); | ||||
|       exit(1); | ||||
| @@ -207,6 +209,11 @@ static void Init( void ) | ||||
|    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); | ||||
|    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | ||||
|    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | ||||
|  | ||||
|    glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &maxBias); | ||||
|    printf("LOD bias range: [%g, %g]\n", -maxBias, maxBias); | ||||
|    BiasMin = -100 * maxBias; | ||||
|    BiasMax =  100 * maxBias; | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: osdemo.c,v 1.7 2001/09/24 15:29:27 kschultz Exp $ */ | ||||
| /* $Id: osdemo.c,v 1.7.2.1 2002/04/15 21:22:36 kschultz Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Demo of off-screen Mesa rendering | ||||
| @@ -14,6 +14,11 @@ | ||||
|  * | ||||
|  * PPM output provided by Joerg Schmalzl. | ||||
|  * ASCII PPM output added by Brian Paul. | ||||
|  * | ||||
|  * Usage: osdemo [-perf] [filename] | ||||
|  * | ||||
|  * -perf: Redraws the image 1000 times, displaying the FPS every 5 secs. | ||||
|  * filename: file to store the TGA or PPM output | ||||
|  */ | ||||
|  | ||||
|  | ||||
| @@ -29,7 +34,9 @@ | ||||
| #define WIDTH 400 | ||||
| #define HEIGHT 400 | ||||
|  | ||||
|  | ||||
| static GLint T0 = 0; | ||||
| static GLint Frames = 0; | ||||
| static int perf = 0; | ||||
|  | ||||
| static void render_image( void ) | ||||
| { | ||||
| @@ -76,7 +83,7 @@ static void render_image( void ) | ||||
|    glPopMatrix(); | ||||
|  | ||||
| #ifdef GL_HP_occlusion_test | ||||
|    { | ||||
|    if (perf == 0) { | ||||
|       GLboolean bRet; | ||||
|       glDepthMask(GL_FALSE); | ||||
|       glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE); | ||||
| @@ -105,7 +112,7 @@ static void render_image( void ) | ||||
|    glPopMatrix(); | ||||
|  | ||||
| #ifdef GL_HP_occlusion_test | ||||
|    { | ||||
|    if (perf == 0){ | ||||
|       GLboolean bRet; | ||||
|  | ||||
|       glDepthMask(GL_FALSE); | ||||
| @@ -130,6 +137,18 @@ static void render_image( void ) | ||||
| #endif | ||||
|  | ||||
|    glPopMatrix(); | ||||
|  | ||||
|    Frames++; | ||||
|    if (perf) { | ||||
|      GLint t = glutGet(GLUT_ELAPSED_TIME); | ||||
|      if (t - T0 >= 5000) { | ||||
|         GLfloat seconds = (t - T0) / 1000.0; | ||||
|         GLfloat fps = Frames / seconds; | ||||
|         printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps); | ||||
|         T0 = t; | ||||
|         Frames = 0; | ||||
|      } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -224,6 +243,8 @@ write_ppm(const char *filename, const GLubyte *buffer, int width, int height) | ||||
| int main( int argc, char *argv[] ) | ||||
| { | ||||
|    void *buffer; | ||||
|    int i; | ||||
|    char *filename = NULL; | ||||
|  | ||||
|    /* Create an RGBA-mode context */ | ||||
| #if OSMESA_MAJOR_VERSION * 100 + OSMESA_MINOR_VERSION >= 305 | ||||
| @@ -237,6 +258,11 @@ int main( int argc, char *argv[] ) | ||||
|       return 0; | ||||
|    } | ||||
|  | ||||
|    for ( i=1; i<argc; i++ ) { | ||||
|       if (argv[i][0] != '-') filename = argv[i]; | ||||
|       if (strcmp(argv[i], "-perf")==0) perf = 1; | ||||
|    } | ||||
|  | ||||
|    /* Allocate the image buffer */ | ||||
|    buffer = malloc( WIDTH * HEIGHT * 4 * sizeof(GLubyte) ); | ||||
|    if (!buffer) { | ||||
| @@ -256,16 +282,19 @@ int main( int argc, char *argv[] ) | ||||
|       glGetIntegerv(GL_DEPTH_BITS, &z); | ||||
|       glGetIntegerv(GL_STENCIL_BITS, &s); | ||||
|       glGetIntegerv(GL_ACCUM_RED_BITS, &a); | ||||
|       printf("%d %d %d\n", z, s, a); | ||||
|       printf("Depth=%d Stencil=%d Accum=%d\n", z, s, a); | ||||
|    } | ||||
|  | ||||
|    render_image(); | ||||
|    if (perf) | ||||
|       for(i=0; i< 1000; i++) | ||||
|          render_image(); | ||||
|  | ||||
|    if (argc>1) { | ||||
|    if (filename != NULL) { | ||||
| #ifdef SAVE_TARGA | ||||
|       write_targa(argv[1], buffer, WIDTH, HEIGHT); | ||||
|       write_targa(filename, buffer, WIDTH, HEIGHT); | ||||
| #else | ||||
|       write_ppm(argv[1], buffer, WIDTH, HEIGHT); | ||||
|       write_ppm(filename, buffer, WIDTH, HEIGHT); | ||||
| #endif | ||||
|    } | ||||
|    else { | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: paltex.c,v 1.6 2000/10/05 07:17:43 joukj Exp $ */ | ||||
| /* $Id: paltex.c,v 1.6.2.1 2002/04/15 22:14:09 kschultz Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Paletted texture demo.  Written by Brian Paul. | ||||
| @@ -9,6 +9,9 @@ | ||||
| #include <stdlib.h> | ||||
| #include <math.h> | ||||
| #include <string.h> | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #endif | ||||
| #define GL_GLEXT_LEGACY | ||||
| #include <GL/glut.h> | ||||
|  | ||||
|   | ||||
| @@ -13,6 +13,13 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: pointblast.c,v $ | ||||
|  * Revision 1.2.6.1  2002/04/15 22:14:09  kschultz | ||||
|  * Build demos/samples correctly on Windows (Robert Bergkvist) to sync up | ||||
|  * with the main branch.  (I should have done this for 4.0.2) | ||||
|  * | ||||
|  * Revision 1.3  2002/01/16 00:48:43  kschultz | ||||
|  * Demo updates for Windows (Robert Bergkvist) | ||||
|  * | ||||
|  * Revision 1.2  2000/06/27 17:04:43  brianp | ||||
|  * fixed compiler warnings | ||||
|  * | ||||
| @@ -38,6 +45,9 @@ | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <math.h>       /* for cos(), sin(), and sqrt() */ | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #endif | ||||
| #define GL_GLEXT_LEGACY | ||||
| #include <GL/glut.h> | ||||
|  | ||||
|   | ||||
| @@ -11,15 +11,20 @@ | ||||
| #include <math.h> | ||||
| #include <time.h> | ||||
| #include <GL/glut.h> | ||||
| #ifndef M_PI | ||||
| #define M_PI 3.14159265 | ||||
| #endif | ||||
|  | ||||
| #include "particles.h" | ||||
| extern "C" { | ||||
| #include "image.h" | ||||
| #include "readtex.h" | ||||
| } | ||||
|  | ||||
| #ifdef WIN32 | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #include <mmsystem.h> | ||||
| #include "particles.cxx" | ||||
| #include "readtex.c" | ||||
| #endif | ||||
|  | ||||
| #ifdef XMESA | ||||
| @@ -297,20 +302,21 @@ static void key(unsigned char key, int x, int y) | ||||
|  | ||||
| static void inittextures(void) | ||||
| { | ||||
|   IMAGE *img; | ||||
|   GLubyte *img; | ||||
|   GLint width,height; | ||||
|   GLenum format; | ||||
|   GLenum gluerr; | ||||
|  | ||||
|   glGenTextures(1,&groundid); | ||||
|   glBindTexture(GL_TEXTURE_2D,groundid); | ||||
|  | ||||
|   if(!(img=ImageLoad("s128.rgb"))) { | ||||
|     fprintf(stderr,"Error reading a texture.\n"); | ||||
|     exit(-1); | ||||
|   if(!(img=LoadRGBImage("../images/s128.rgb",&width,&height,&format))){ | ||||
|   	fprintf(stderr,"Error reading a texture.\n"); | ||||
|   	exit(-1); | ||||
|   } | ||||
|  | ||||
|   glPixelStorei(GL_UNPACK_ALIGNMENT,4); | ||||
|   if((gluerr=(GLenum)gluBuild2DMipmaps(GL_TEXTURE_2D, 3, img->sizeX, img->sizeY, GL_RGB, | ||||
| 			       GL_UNSIGNED_BYTE, (GLvoid *)(img->data)))) { | ||||
|   if((gluerr=(GLenum)gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height,GL_RGB, | ||||
| 			       GL_UNSIGNED_BYTE, (GLvoid *)(img)))) { | ||||
|     fprintf(stderr,"GLULib%s\n",gluErrorString(gluerr)); | ||||
|     exit(-1); | ||||
|   } | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: readpix.c,v 1.4 2000/10/16 21:24:39 brianp Exp $ */ | ||||
| /* $Id: readpix.c,v 1.4.2.1 2002/05/01 14:53:52 alanh Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * glReadPixels and glCopyPixels test | ||||
| @@ -8,6 +8,13 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: readpix.c,v $ | ||||
|  * Revision 1.4.2.1  2002/05/01 14:53:52  alanh | ||||
|  * glutSwapBuffers implicitly does a glFinish when swapping back to the front | ||||
|  * buffer. We now issue a glFinish when not issuing SwapBuffers to ensure | ||||
|  * the pipeline is complete. | ||||
|  * | ||||
|  * (Problem found with Chromium). | ||||
|  * | ||||
|  * Revision 1.4  2000/10/16 21:24:39  brianp | ||||
|  * use gray background, memset TempImage to white to help with debugging | ||||
|  * | ||||
| @@ -173,6 +180,8 @@ Display( void ) | ||||
|  | ||||
|    if (!DrawFront) | ||||
|       glutSwapBuffers(); | ||||
|    else | ||||
|       glFinish(); | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: winpos.c,v 1.3 2000/12/24 22:53:54 pesco Exp $ */ | ||||
| /* $Id: winpos.c,v 1.3.2.1 2002/04/15 22:14:09 kschultz Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Example of how to use the GL_MESA_window_pos extension. | ||||
| @@ -8,6 +8,13 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: winpos.c,v $ | ||||
|  * Revision 1.3.2.1  2002/04/15 22:14:09  kschultz | ||||
|  * Build demos/samples correctly on Windows (Robert Bergkvist) to sync up | ||||
|  * with the main branch.  (I should have done this for 4.0.2) | ||||
|  * | ||||
|  * Revision 1.4  2002/01/16 00:48:43  kschultz | ||||
|  * Demo updates for Windows (Robert Bergkvist) | ||||
|  * | ||||
|  * Revision 1.3  2000/12/24 22:53:54  pesco | ||||
|  * * demos/Makefile.am (INCLUDES): Added -I$(top_srcdir)/util. | ||||
|  * * demos/Makefile.X11, demos/Makefile.BeOS-R4, demos/Makefile.cygnus: | ||||
| @@ -59,6 +66,9 @@ | ||||
| #include <string.h> | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #endif | ||||
| #define GL_GLEXT_LEGACY | ||||
| #include "GL/glut.h" | ||||
|  | ||||
|   | ||||
| @@ -19,6 +19,7 @@ | ||||
|  | ||||
| ggi_visual_t vis; | ||||
| char text[100]; | ||||
| int db_flag,vis_x, vis_y, vir_x, vir_y, gt; | ||||
|  | ||||
| /* | ||||
|  * Draw a gear wheel.  You'll probably want to call this function when | ||||
| @@ -157,6 +158,7 @@ static GLuint count = 1; | ||||
|  | ||||
| static void draw( void ) | ||||
| { | ||||
|    static int n = 0; | ||||
|    glClearColor(0,0,0,0); | ||||
|    glClearIndex(0); | ||||
|    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); | ||||
| @@ -197,12 +199,25 @@ static void draw( void ) | ||||
|    ggiPuts(vis,0,ggiGetInfo(vis)->mode->visible.y+16,text); | ||||
| #endif | ||||
|  | ||||
|    GGIMesaSwapBuffers(); | ||||
|     if(db_flag) | ||||
|    ggiMesaSwapBuffers(); | ||||
|  			 | ||||
|    count++; | ||||
|    if (count==limit) { | ||||
|       exit(1); | ||||
|    } | ||||
|     ++n; | ||||
|     /* | ||||
|    if (!(n%10)){ | ||||
| 	ggi_color rgb = { 10000, 10000, 10000 }; | ||||
| 	ggiSetSimpleMode(vis,vis_x+(n/10),vis_y+(n/10),db_flag?2:1, gt);  | ||||
| 	glViewport(0, 0,vis_x+(n/10),vis_y+(n/10)); | ||||
| 	ggiSetGCForeground(vis, ggiMapColor(vis, &rgb)); | ||||
| 	ggiDrawBox(vis, 20, 20, 100, 100); | ||||
| 	if(db_flag) | ||||
| 	  ggiSetWriteFrame(vis, 1); | ||||
|     } | ||||
|     */ | ||||
| } | ||||
|  | ||||
| static void idle( void ) | ||||
| @@ -216,6 +231,10 @@ static void reshape( int width, int height ) | ||||
| { | ||||
|    GLfloat  h = (GLfloat) height / (GLfloat) width; | ||||
|  | ||||
|     if(db_flag) | ||||
| 	glDrawBuffer(GL_BACK); | ||||
|     else | ||||
| 	glDrawBuffer(GL_FRONT); | ||||
|    glViewport(0, 0, (GLint)width, (GLint)height); | ||||
|    glMatrixMode(GL_PROJECTION); | ||||
|    glLoadIdentity(); | ||||
| @@ -231,8 +250,8 @@ static void reshape( int width, int height ) | ||||
| static void init( void ) | ||||
| { | ||||
|    static GLfloat pos[4] = {5.0, 5.0, 10.0, 0.0 }; | ||||
|    static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0 }; | ||||
|    static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0 }; | ||||
|    static GLfloat red[4] = {0.9, 0.9, 0.9, 1.0 }; | ||||
|    static GLfloat green[4] = {0.0, 0.8, 0.9, 1.0 }; | ||||
|    static GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0 }; | ||||
|  | ||||
|    glLightfv( GL_LIGHT0, GL_POSITION, pos ); | ||||
| @@ -276,9 +295,9 @@ static void usage(char *s) | ||||
|  | ||||
| int main( int argc, char *argv[] ) | ||||
| { | ||||
| 	GGIMesaContext ctx; | ||||
| 	int vis_x,vis_y,vir_x,vir_y,bpp,db_flag,gt; | ||||
| 	ggi_mesa_context_t ctx; | ||||
| 	ggi_mode mode; | ||||
| 	int bpp; | ||||
|  | ||||
| 	limit=0; | ||||
|  | ||||
| @@ -313,13 +332,12 @@ int main( int argc, char *argv[] ) | ||||
| 		exit(1); | ||||
| 	} | ||||
|   | ||||
| 	ctx=GGIMesaCreateContext();  | ||||
| 	if (ctx==NULL) | ||||
| 	if (ggiMesaInit() < 0) | ||||
| 	{ | ||||
| 		printf("GGIMesaCreateContext() failed\n"); | ||||
| 		printf("ggiMesaInit failed\n"); | ||||
| 		exit(1); | ||||
| 	} | ||||
|  | ||||
| 	 | ||||
| 	vis=ggiOpen(NULL); | ||||
| 	if (vis==NULL) | ||||
| 	{ | ||||
| @@ -327,29 +345,42 @@ int main( int argc, char *argv[] ) | ||||
| 		exit(1); | ||||
| 	} | ||||
|  | ||||
| 	if (ggiSetGraphMode(vis,vis_x,vis_y,vir_x,vir_y,gt)<0)  | ||||
| 	if (ggiSetSimpleMode(vis,vis_x,vis_y,db_flag ? 2 : 1,gt)<0)  | ||||
| 	{ | ||||
| 		printf("%s: can't set graphmode (%i %i %i %i)  %i BPP\n", | ||||
| 			argv[0],vis_x,vis_y,vir_x,vir_y,bpp); | ||||
| 		exit(1); | ||||
| 	} | ||||
|  | ||||
| 	if (GGIMesaSetVisual(ctx,vis,GL_TRUE,db_flag)<0) | ||||
| 	if (ggiMesaAttach(vis) < 0) | ||||
| 	{ | ||||
| 		printf("ggiMesaAttach failed\n"); | ||||
| 		exit(1); | ||||
| 	} | ||||
| 	if (ggiMesaExtendVisual(vis, GL_FALSE, GL_FALSE, 16, | ||||
| 	                        0, 0, 0, 0, 0, 1)  < 0) | ||||
| 	{ | ||||
| 		printf ("GGIMesaSetVisual() failed\n"); | ||||
| 		exit(1); | ||||
| 	} | ||||
|  | ||||
| 	GGIMesaMakeCurrent(ctx); | ||||
| 	ctx = ggiMesaCreateContext(vis);  | ||||
| 	if (ctx==NULL) | ||||
| 	{ | ||||
| 		printf("GGIMesaCreateContext() failed\n"); | ||||
| 		exit(1); | ||||
| 	} | ||||
|  | ||||
| 	ggiMesaMakeCurrent(ctx, vis); | ||||
| 	ggiGetMode(vis,&mode); | ||||
|  | ||||
| 	reshape(mode.visible.x,mode.visible.y); | ||||
|  | ||||
| 	init(); | ||||
|   | ||||
| 	while (!ggiKbhit(vis)) idle(); | ||||
| 	while (!ggiKbhit(vis)) { /*sleep(1);*/ idle(); } | ||||
|  | ||||
| 	GGIMesaDestroyContext(ctx); | ||||
| 	ggiMesaDestroyContext(ctx); | ||||
| 	ggiClose(vis); | ||||
|  | ||||
| 	printf("%s\n",text); | ||||
|   | ||||
| @@ -1,62 +1,51 @@ | ||||
| # Makefile for Win32 | ||||
|  | ||||
| TOP = .. | ||||
|  | ||||
| !include "$(TOP)/names.win" | ||||
| TOP    = .. | ||||
| INCDIR = ..\include | ||||
| LIBDIR = ..\lib | ||||
|  | ||||
| !include <win32.mak> | ||||
|  | ||||
| SRCS= \ | ||||
|    aaindex.c \ | ||||
|    aapoly.c \ | ||||
|    aargb.c \ | ||||
|    accanti.c \ | ||||
|    accnot.c   \ | ||||
|    accum.c    \ | ||||
|    aim.c      \ | ||||
|    accpersp.c \ | ||||
|    alpha.c    \ | ||||
|    alpha3D.c  \ | ||||
|    anti.c     \ | ||||
|    antiindex.c  \ | ||||
|    antipindex.c \ | ||||
|    antipoint.c  \ | ||||
|    antipoly.c  \ | ||||
|    bezcurve.c  \ | ||||
|    bezmesh.c   \ | ||||
|    bezsurf.c   \ | ||||
|    checker.c   \ | ||||
|    checker2.c  \ | ||||
|    chess.c     \ | ||||
|    clip.c      \ | ||||
|    colormat.c  \ | ||||
|    cone.c      \ | ||||
|    cube.c      \ | ||||
|    curve.c     \ | ||||
|    depthcue.c  \ | ||||
|    disk.c      \ | ||||
|    dof.c       \ | ||||
|    dofnot.c    \ | ||||
|    double.c    \ | ||||
|    drawf.c     \ | ||||
|    feedback.c  \ | ||||
|    fog.c       \ | ||||
|    fogindex.c  \ | ||||
|    font.c      \ | ||||
|    hello.c     \ | ||||
|    image.c     \ | ||||
|    light.c     \ | ||||
|    linelist.c  \ | ||||
|    lines.c     \ | ||||
|    list.c      \ | ||||
|    list2.c     \ | ||||
|    maplight.c  \ | ||||
|    material.c  \ | ||||
|    mipmap.c    \ | ||||
|    model.c     \ | ||||
|    movelight.c \ | ||||
|    nurbs.c     \ | ||||
|    pickdepth.c \ | ||||
|    pickline.c  \ | ||||
|    picksquare.c \ | ||||
|    plane.c     \ | ||||
|    planet.c    \ | ||||
|    planetup.c  \ | ||||
|    polyoff.c  \ | ||||
|    polys.c     \ | ||||
|    quadric.c   \ | ||||
|    robot.c     \ | ||||
|    sccolorlight.c \ | ||||
|    scene.c     \ | ||||
| @@ -64,18 +53,26 @@ SRCS= \ | ||||
|    sceneflat.c \ | ||||
|    select.c    \ | ||||
|    smooth.c    \ | ||||
|    sphere.c    \ | ||||
|    stencil.c   \ | ||||
|    stroke.c    \ | ||||
|    surface.c   \ | ||||
|    tea.c       \ | ||||
|    teaambient.c \ | ||||
|    teapots.c   \ | ||||
|    tess.c      \ | ||||
|    tesswind.c  \ | ||||
|    texbind.c   \ | ||||
|    texgen.c    \ | ||||
|    texprox.c   \ | ||||
|    texsub.c    \ | ||||
|    texturesurf.c \ | ||||
|    trim.c      | ||||
|  | ||||
| EXTRALIBS = $(MESAGL).lib $(MESAGLU).lib $(MESATK).lib $(MESAAUX).lib | ||||
|    torus.c     \ | ||||
|    trim.c     \ | ||||
|    unproject.c \ | ||||
|    varray.c   \ | ||||
|    wrap.c | ||||
|  | ||||
| !include "$(TOP)/mesawin32.mak" | ||||
|  | ||||
| $(EXES) : $*.obj | ||||
| 	@echo $@ | ||||
| 	$(link) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS) | ||||
| @@ -42,6 +42,7 @@ | ||||
|  *  two rectangles.  This program clamps the texture, if | ||||
|  *  the texture coordinates fall outside 0.0 and 1.0. | ||||
|  */ | ||||
| #include <stdlib.h> | ||||
| #include <GL/glut.h> | ||||
|  | ||||
| /*	Create checkerboard texture	*/ | ||||
|   | ||||
| @@ -62,7 +62,7 @@ selectFog(int mode) | ||||
| 	/* falls through */ | ||||
|     case GL_EXP2: | ||||
|     case GL_EXP: | ||||
|         glFogi(GL_FOG_MODE, mode); | ||||
| 	glFogiv(GL_FOG_MODE, (int *) &mode); | ||||
| 	glutPostRedisplay(); | ||||
| 	break; | ||||
|     case 0: | ||||
| @@ -190,7 +190,7 @@ main(int argc, char **argv) | ||||
|     glutDisplayFunc(display); | ||||
|     glutCreateMenu(selectFog); | ||||
|     glutAddMenuEntry("Fog EXP", GL_EXP); | ||||
|     glutAddMenuEntry("Fog EXP2", GL_EXP2); | ||||
|     glutAddMenuEntry("Fog EXP2", /*GL_EXP2*/ 0xffff); | ||||
|     glutAddMenuEntry("Fog LINEAR", GL_LINEAR); | ||||
|     glutAddMenuEntry("Quit", 0); | ||||
|     glutAttachMenu(GLUT_RIGHT_BUTTON); | ||||
|   | ||||
| @@ -39,6 +39,7 @@ | ||||
|  * hello.c | ||||
|  * This is a simple, introductory OpenGL program. | ||||
|  */ | ||||
| #include <stdlib.h> | ||||
| #include <GL/glut.h> | ||||
|  | ||||
| void display(void) | ||||
|   | ||||
| @@ -44,6 +44,7 @@ | ||||
| #include <GL/glut.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  | ||||
| #ifdef GL_VERSION_1_1 | ||||
| GLuint list; | ||||
| @@ -149,7 +150,7 @@ static void Benchmark( float xdiff, float ydiff ) | ||||
| { | ||||
|    int startTime, endTime; | ||||
|    int draws; | ||||
|    double seconds, fps, triPerSecond; | ||||
|    double seconds, fps; | ||||
|  | ||||
|    printf("Benchmarking...\n"); | ||||
|  | ||||
|   | ||||
| @@ -41,6 +41,7 @@ | ||||
|  *  This program draws a NURBS surface in the shape of a | ||||
|  *  symmetrical hill. | ||||
|  */ | ||||
| #include <stdlib.h> | ||||
| #include <GL/glut.h> | ||||
|  | ||||
| GLfloat ctlpoints[4][4][3]; | ||||
|   | ||||
							
								
								
									
										42
									
								
								progs/samples/Makefile.win
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								progs/samples/Makefile.win
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| # $Id: Makefile.win,v 1.1.2.1 2002/04/15 22:13:31 kschultz Exp $ | ||||
|  | ||||
| # 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) | ||||
| @@ -11,6 +11,10 @@ | ||||
| #include <string.h> | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #endif | ||||
| #define GL_GLEXT_LEGACY | ||||
| #include <GL/glut.h> | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -10,6 +10,10 @@ | ||||
| #include <unistd.h> | ||||
| #endif | ||||
| #include <stdlib.h> | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #endif | ||||
| #define GL_GLEXT_LEGACY | ||||
| #include <GL/glut.h> | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -174,7 +174,7 @@ static void DeleteTri(GLint h) | ||||
| static void GrowTri(GLint h) | ||||
| { | ||||
|     float v[2]; | ||||
|     float *oldV; | ||||
|     float *oldV = NULL; | ||||
|     GLint i; | ||||
|  | ||||
|     v[0] = objects[h].v1[0] + objects[h].v2[0] + objects[h].v3[0]; | ||||
|   | ||||
							
								
								
									
										39
									
								
								progs/tests/Makefile.win
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								progs/tests/Makefile.win
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| # $Id: Makefile.win,v 1.1.2.1 2002/04/15 22:13:00 kschultz Exp $ | ||||
|  | ||||
| # 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 | ||||
|  | ||||
| SRCS = cva.c \ | ||||
| 	dinoshade.c \ | ||||
| 	fogcoord.c \ | ||||
| 	manytex.c \ | ||||
| 	multipal.c \ | ||||
| 	projtex.c \ | ||||
| 	seccolor.c \ | ||||
| #	sharedtex.c \ | ||||
| 	texline.c \ | ||||
| 	texwrap.c | ||||
| 	 | ||||
| !include "../mesawin32.mak" | ||||
|  | ||||
| ##### TARGETS ##### | ||||
|  | ||||
| clean:: | ||||
|  | ||||
| clobber:: | ||||
| 	@del readtex.c readtex.h | ||||
|  | ||||
| $(EXES) :$*.obj | ||||
| 	@echo $@ | ||||
| 	$(link) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS) | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: cva.c,v 1.3 2000/11/30 03:06:56 gareth Exp $ */ | ||||
| /* $Id: cva.c,v 1.3.2.1 2002/04/15 22:13:00 kschultz Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Trivial CVA test, good for testing driver fastpaths (especially | ||||
| @@ -11,6 +11,9 @@ | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #endif | ||||
| #define GL_GLEXT_LEGACY | ||||
| #include <GL/glut.h> | ||||
|  | ||||
| @@ -130,7 +133,7 @@ int main( int argc, char **argv ) | ||||
|     */ | ||||
|    string = (char *) glGetString( GL_VERSION ); | ||||
|  | ||||
|    if ( !strstr( string, "1.2" ) ) { | ||||
|    if ( (!strstr( string, "1.2" ))&&(!strstr(string,"1.3"))) { | ||||
|       fprintf( stderr, "This program requires OpenGL 1.2 vertex arrays.\n" ); | ||||
|       exit( -1 ); | ||||
|    } | ||||
|   | ||||
| @@ -38,6 +38,10 @@ | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <math.h>       /* for cos(), sin(), and sqrt() */ | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #endif | ||||
| #define GL_GLEXT_LEGACY | ||||
| #include <GL/glut.h>    /* OpenGL Utility Toolkit header */ | ||||
|  | ||||
| /* Some <math.h> files do not define M_PI... */ | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: multipal.c,v 1.1 2000/11/18 17:12:33 brianp Exp $ */ | ||||
| /* $Id: multipal.c,v 1.1.2.1 2002/04/15 22:13:00 kschultz Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * GL_ARB_multitexture demo | ||||
| @@ -12,6 +12,13 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: multipal.c,v $ | ||||
|  * Revision 1.1.2.1  2002/04/15 22:13:00  kschultz | ||||
|  * Build demos/samples correctly on Windows (Robert Bergkvist) to sync up | ||||
|  * with the main branch.  (I should have done this for 4.0.2) | ||||
|  * | ||||
|  * Revision 1.2  2002/01/16 01:03:25  kschultz | ||||
|  * get tests working on windows (Robert Bergkvist) | ||||
|  * | ||||
|  * Revision 1.1  2000/11/18 17:12:33  brianp | ||||
|  * test texture palettes with multitexture | ||||
|  * | ||||
| @@ -52,6 +59,10 @@ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #endif | ||||
| #define GL_GLEXT_LEGACY | ||||
| #include <GL/glut.h> | ||||
|  | ||||
| #include "../util/readtex.c"   /* I know, this is a hack. */ | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| # $Id: Makefile.X11,v 1.11 2001/03/23 22:48:35 brianp Exp $ | ||||
| # $Id: Makefile.X11,v 1.11.2.1 2002/01/30 21:54:47 brianp Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  3.5 | ||||
| # Version:  4.0.2 | ||||
| # Copyright (C) 1995-2001  Brian Paul | ||||
|  | ||||
| # Makefile for non-GLUT (X11, SVGA, etc) demo programs | ||||
| @@ -12,9 +12,9 @@ | ||||
| INCDIR = ../include | ||||
| LIBDIR = ../lib | ||||
|  | ||||
| GL_LIBS = -L$(LIBDIR) -lglut -lGLU -lGL $(APP_LIB_DEPS) | ||||
| GL_LIBS = -L$(LIBDIR) -lGLU -lGL $(APP_LIB_DEPS) | ||||
|  | ||||
| LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB) | ||||
| LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) | ||||
|  | ||||
| PROGS = glthreads \ | ||||
| 	glxdemo \ | ||||
| @@ -43,7 +43,7 @@ PROGS = glthreads \ | ||||
| ##### TARGETS ##### | ||||
|  | ||||
| default: | ||||
| 	@echo "Specify a target configuration" | ||||
| 	@echo "Specify a target configuration (i.e. make -f Makefile.X11 linux)" | ||||
|  | ||||
| clean: | ||||
| 	-rm *.o *~ | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: glthreads.c,v 1.1 2000/07/20 20:12:17 brianp Exp $ */ | ||||
| /* $Id: glthreads.c,v 1.1.4.1 2002/03/08 19:43:36 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (C) 2000  Brian Paul   All Rights Reserved. | ||||
| @@ -38,6 +38,7 @@ | ||||
| #include <GL/glx.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <unistd.h> | ||||
| #include <pthread.h> | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: glxheads.c,v 1.2 2000/11/10 17:23:07 brianp Exp $ */ | ||||
| /* $Id: glxheads.c,v 1.2.2.1 2002/03/08 19:43:36 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Exercise multiple GLX connections on multiple X displays. | ||||
| @@ -30,6 +30,7 @@ | ||||
| #include <GL/glx.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
|  | ||||
| @@ -247,9 +248,9 @@ static void | ||||
| PrintInfo(const struct head *h) | ||||
| { | ||||
|    printf("Name: %s\n", h->DisplayName); | ||||
|    printf("  Display:     0x%x\n", h->Dpy); | ||||
|    printf("  Window:      0x%x\n", h->Win); | ||||
|    printf("  Context:     0x%x\n", h->Context); | ||||
|    printf("  Display:     0x%x\n", (int) h->Dpy); | ||||
|    printf("  Window:      0x%x\n", (int) h->Win); | ||||
|    printf("  Context:     0x%x\n", (int) h->Context); | ||||
|    printf("  GL_VERSION:  %s\n", h->Version); | ||||
|    printf("  GL_VENDOR:   %s\n", h->Vendor); | ||||
|    printf("  GL_RENDERER: %s\n", h->Renderer); | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: glxinfo.c,v 1.14 2001/04/24 20:57:36 brianp Exp $ */ | ||||
| /* $Id: glxinfo.c,v 1.14.2.1 2002/03/08 19:43:36 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. | ||||
| @@ -408,7 +408,7 @@ print_visual_attribs_short_header(void) | ||||
| static void | ||||
| print_visual_attribs_short(const struct visual_attribs *attribs) | ||||
| { | ||||
|    char *caveat; | ||||
|    char *caveat = NULL; | ||||
| #ifdef GLX_EXT_visual_rating | ||||
|    if (attribs->visualCaveat == GLX_NONE_EXT || attribs->visualCaveat == 0) | ||||
|       caveat = "None"; | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: manywin.c,v 1.4 2001/04/27 21:19:13 brianp Exp $ */ | ||||
| /* $Id: manywin.c,v 1.4.2.1 2001/11/26 17:21:24 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Create N GLX windows/contexts and render to them in round-robin | ||||
| @@ -29,6 +29,7 @@ | ||||
| #include <GL/glx.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
|  | ||||
| @@ -281,7 +282,7 @@ static void | ||||
| PrintInfo(const struct head *h) | ||||
| { | ||||
|    printf("Name: %s\n", h->DisplayName); | ||||
|    printf("  Display:     %p\n", h->Dpy); | ||||
|    printf("  Display:     %p\n", (void *) h->Dpy); | ||||
|    printf("  Window:      0x%x\n", (int) h->Win); | ||||
|    printf("  Context:     0x%x\n", (int) h->Context); | ||||
|    printf("  GL_VERSION:  %s\n", h->Version); | ||||
|   | ||||
							
								
								
									
										85
									
								
								src/glu/mesa/Makefile.DJ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								src/glu/mesa/Makefile.DJ
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| # 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. | ||||
|  | ||||
| # DOS/DJGPP glu makefile v1.0 for Mesa 4.0 | ||||
| # | ||||
| #  Copyright (C) 2002 - Borca Daniel | ||||
| #  Email : dborca@yahoo.com | ||||
| #  Web   : http://www.geocities.com/dborca | ||||
|  | ||||
|  | ||||
| .PHONY: all clean | ||||
|  | ||||
| TOP = .. | ||||
| CC = gcc | ||||
| CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=$(CPU) -ffast-math -O2 | ||||
| AR = ar | ||||
| ARFLAGS = ruv | ||||
| LIBDIR = $(TOP)/lib | ||||
|  | ||||
| ifeq ($(wildcard $(DJDIR)/lib/dxe2.ld),) | ||||
| DXE2GEN = | ||||
| else | ||||
| DXE2GEN = $(wildcard $(addsuffix /dxe2gen.exe,$(subst ;, ,$(PATH)))) | ||||
| endif | ||||
|  | ||||
| GLU_LIB = libglu.a | ||||
| GLU_DXE = glu.dxe | ||||
| GLU_IMP = libiglu.a | ||||
|  | ||||
| CORE_SOURCES = \ | ||||
| 	glu.c \ | ||||
| 	mipmap.c \ | ||||
| 	nurbs.c \ | ||||
| 	nurbscrv.c \ | ||||
| 	nurbssrf.c \ | ||||
| 	nurbsutl.c \ | ||||
| 	polytest.c \ | ||||
| 	project.c \ | ||||
| 	quadric.c \ | ||||
| 	tess.c \ | ||||
| 	tesselat.c | ||||
|  | ||||
| SOURCES = $(CORE_SOURCES) | ||||
|  | ||||
| OBJECTS = $(SOURCES:.c=.o) | ||||
|  | ||||
| .c.o: | ||||
| 	gcc -o $@ -c $(CFLAGS) $< | ||||
|  | ||||
| all: $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLU_DXE) $(LIBDIR)/$(GLU_IMP) | ||||
|  | ||||
| $(LIBDIR)/$(GLU_LIB): $(OBJECTS) | ||||
| 	$(AR) $(ARFLAGS) $(LIBDIR)/$(GLU_LIB) $(OBJECTS) | ||||
|  | ||||
| $(LIBDIR)/$(GLU_DXE) $(LIBDIR)/$(GLU_IMP): $(OBJECTS) | ||||
| ifeq ($(DXE2GEN),) | ||||
| 	$(warning Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN) | ||||
| 	$(warning somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.) | ||||
| else | ||||
| 	dxe2gen -o $(LIBDIR)/$(GLU_DXE) -I $(LIBDIR)/$(GLU_IMP) $(OBJECTS) -D "Mesa DOS GLU" -U | ||||
| endif | ||||
|  | ||||
| clean: | ||||
| 	-$(RM) *.o | ||||
|  | ||||
| include depend | ||||
| @@ -1,9 +1,9 @@ | ||||
| /* $Id: glu.c,v 1.24 2001/03/20 17:56:10 brianp Exp $ */ | ||||
| /* $Id: glu.c,v 1.24.2.1 2002/02/12 03:13:42 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.5 | ||||
|  * Copyright (C) 1995-2001  Brian Paul | ||||
|  * Version:  4.0.2 | ||||
|  * Copyright (C) 1995-2002  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
| @@ -330,7 +330,7 @@ const GLubyte *GLAPIENTRY | ||||
| gluGetString(GLenum name) | ||||
| { | ||||
|    static char *extensions = "GL_EXT_abgr"; | ||||
|    static char *version = "1.1 Mesa 3.5"; | ||||
|    static char *version = "1.1 Mesa 4.0.2"; | ||||
|  | ||||
|    switch (name) { | ||||
|    case GLU_EXTENSIONS: | ||||
|   | ||||
| @@ -1,11 +1,12 @@ | ||||
| # $Id: Makefile.X11,v 1.5 2001/08/13 16:51:08 brianp Exp $ | ||||
| # $Id: Makefile.X11,v 1.5.2.2 2002/01/08 15:58:11 brianp Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  3.5 | ||||
| # Version:  4.0.1 | ||||
| # Copyright (C) 1995-2001  Brian Paul | ||||
|  | ||||
| # Makefile for SGI SI GLU library | ||||
|  | ||||
| .SUFFIXES : .cc | ||||
|  | ||||
| ##### MACROS ##### | ||||
|  | ||||
| @@ -121,11 +122,10 @@ OBJECTS = $(C_OBJECTS) $(CC_OBJECTS) | ||||
| ##### RULES ##### | ||||
|  | ||||
| .c.o: | ||||
| 	$(CC) -c $(INCDIRS) $(CFLAGS) -DLIBRARYBUILD $< -o $@ | ||||
| 	$(CC) -c $(INCDIRS) $(CFLAGS) -DNDEBUG -DLIBRARYBUILD $< -o $@ | ||||
|  | ||||
| .cc.o: | ||||
| 	$(CPLUSPLUS) -c $(INCDIRS) $(CCFLAGS) -DLIBRARYBUILD $< -o $@ | ||||
|  | ||||
| 	$(CPLUSPLUS) -c $(INCDIRS) $(CCFLAGS) -DNDEBUG -DLIBRARYBUILD $< -o $@ | ||||
|  | ||||
|  | ||||
| ##### TARGETS ##### | ||||
|   | ||||
| @@ -1,14 +1,5 @@ | ||||
| # Makefile for Win32 | ||||
|  | ||||
| # | ||||
| # Sept 12, 2001 | ||||
| # Note: The nurbs code is not being built at this time. | ||||
| # If you want to work on it, uncomment the definitions | ||||
| # noted below to try to compile the sources. | ||||
| # There are numerous problems, some of which may be solved | ||||
| # by setting some #defines. | ||||
| # | ||||
|  | ||||
| !include <win32.mak> | ||||
|  | ||||
| .SUFFIXES : .cc | ||||
| @@ -116,16 +107,14 @@ all	: gludll | ||||
|  | ||||
| gludll	: $(GLUDLL) | ||||
|  | ||||
| CFLAGS	= $(cvarsdll) $(CFLAGS) -D_OPENGL32_ -Iinclude -DBUILD_GL32 | ||||
| CFLAGS	= $(cvarsdll) $(CFLAGS) -D_OPENGL32_ -Iinclude -DBUILD_GL32 -DLIBRARYBUILD | ||||
| LFLAGS	= $(dlllflags) $(lcommon) $(LFLAGS) | ||||
|  | ||||
| OBJS	= $(GLU_SRCS:.c=.obj) | ||||
| LIBS	= ../lib/$(MESALIB) winmm.lib $(guilibsdll) | ||||
|  | ||||
| # Uncomment these definitions to try to compile the NURBS code. | ||||
| #OBJS	= $(GLU_SRCS_CC:.cc=.obj) $(GLU_SRCS:.c=.obj) | ||||
| #NURBSINC = -Ilibnurbs\interface -Ilibnurbs\internals -Ilibnurbs\nurbtess  | ||||
| #CFLAGS  = $(CFLAGS) $(NURBSINC) | ||||
| OBJS	= $(GLU_SRCS_CC:.cc=.obj) $(GLU_SRCS:.c=.obj) | ||||
| NURBSINC = -Ilibnurbs\interface -Ilibnurbs\internals -Ilibnurbs\nurbtess  | ||||
| CFLAGS  = $(CFLAGS) $(NURBSINC) | ||||
|  | ||||
| $(GLUDLL): $(OBJS) glu.def | ||||
| 	$(link) $(LFLAGS) -out:$(GLUDLL) -def:glu.def $(OBJS) $(LIBS) | ||||
|   | ||||
| @@ -1,8 +1,11 @@ | ||||
| DESCRIPTION 'Mesa GLU (OpenGL work-alike) for Win32' | ||||
| VERSION 3.5 | ||||
| VERSION 4.0 | ||||
|  | ||||
| EXPORTS | ||||
| 	gluBeginCurve | ||||
| 	gluBeginPolygon | ||||
| 	gluBeginSurface | ||||
| 	gluBeginTrim | ||||
| 	gluBuild1DMipmapLevels | ||||
| 	gluBuild1DMipmaps | ||||
| 	gluBuild2DMipmapLevels | ||||
| @@ -11,22 +14,36 @@ EXPORTS | ||||
| 	gluBuild3DMipmaps | ||||
| 	gluCheckExtension | ||||
| 	gluCylinder | ||||
| 	gluDeleteNurbsRenderer | ||||
| 	gluDeleteQuadric | ||||
| 	gluDeleteTess | ||||
| 	gluDisk | ||||
| 	gluEndCurve | ||||
| 	gluEndPolygon | ||||
| 	gluEndSurface | ||||
| 	gluEndTrim | ||||
| 	gluErrorString | ||||
| 	gluGetNurbsProperty | ||||
| 	gluGetString | ||||
| 	gluGetTessProperty | ||||
| 	gluLoadSamplingMatrices | ||||
| 	gluLookAt | ||||
| 	gluNewNurbsRenderer | ||||
| 	gluNewQuadric | ||||
| 	gluNewTess | ||||
| 	gluNextContour | ||||
| 	gluNurbsCallback | ||||
| 	gluNurbsCallbackData | ||||
| 	gluNurbsCallbackDataEXT | ||||
| 	gluNurbsCurve | ||||
| 	gluNurbsProperty | ||||
| 	gluNurbsSurface | ||||
| 	gluOrtho2D | ||||
| 	gluPartialDisk | ||||
| 	gluPerspective | ||||
| 	gluPickMatrix | ||||
| 	gluProject | ||||
| 	gluPwlCurve | ||||
| 	gluQuadricCallback | ||||
| 	gluQuadricDrawStyle | ||||
| 	gluQuadricNormals | ||||
|   | ||||
| @@ -31,10 +31,10 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:40 $ $Revision: 1.1 $ | ||||
| ** $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/interface/bezierEval.cc,v 1.1 2001/03/17 00:25:40 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/interface/bezierEval.cc,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
| */ | ||||
|  | ||||
| #include <stdlib.h> | ||||
| @@ -72,8 +72,8 @@ void bezierCurveEval(float u0, float u1, int order, float *ctlpoints, int stride | ||||
| { | ||||
|   float uprime = (u-u0)/(u1-u0); | ||||
|   float *ctlptr = ctlpoints; | ||||
|   float oneMinusX = 1.0-uprime; | ||||
|   float XPower = 1.0; | ||||
|   float oneMinusX = 1.0f-uprime; | ||||
|   float XPower = 1.0f; | ||||
|  | ||||
|   int i,k; | ||||
|   for(k=0; k<dimension; k++) | ||||
| @@ -171,7 +171,7 @@ void bezierCurveEvalDerGen(int der, float u0, float u1, int order, float *ctlpoi | ||||
|  */ | ||||
| void bezierSurfEvalDerGen(int uder, int vder, float u0, float u1, int uorder, float v0, float v1, int vorder, int dimension, float *ctlpoints, int ustride, int vstride, float u, float v, float ret[]) | ||||
| { | ||||
|   int i,j,k; | ||||
|   int i; | ||||
|   float newPoints[MAX_ORDER][MAX_DIMENSION]; | ||||
|  | ||||
|   for(i=0; i<uorder; i++){ | ||||
| @@ -229,7 +229,7 @@ void bezierSurfEvalNormal(float u0, float u1, int uorder, float v0, float v1, in | ||||
| /*if size is 0, then nothing is done*/ | ||||
| static void normalize(float vec[3]) | ||||
| { | ||||
|   float size = sqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]); | ||||
|   float size = (float)sqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]); | ||||
|  | ||||
|   if(size < TOLERANCE)  | ||||
|     { | ||||
|   | ||||
| @@ -31,10 +31,10 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:40 $ $Revision: 1.1 $ | ||||
| ** $Date: 2002/02/12 03:14:58 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/interface/insurfeval.cc,v 1.1 2001/03/17 00:25:40 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/interface/insurfeval.cc,v 1.1.2.1 2002/02/12 03:14:58 brianp Exp $ | ||||
| */ | ||||
|  | ||||
| #include "gluos.h" | ||||
| @@ -528,11 +528,11 @@ void OpenGLSurfaceEvaluator::inComputeNormal2(REAL *pu, REAL *pv, REAL *n) | ||||
|  | ||||
|   mag = sqrt(n[0]*n[0] + n[1]*n[1] + n[2]*n[2]); | ||||
|  | ||||
|   assert(mag > 0.0); /*better be some threshold*/ | ||||
|   n[0] /= mag;  | ||||
|   n[1] /= mag; | ||||
|   n[2] /= mag; | ||||
|  | ||||
|   if (mag > 0.0) { | ||||
|      n[0] /= mag;  | ||||
|      n[1] /= mag; | ||||
|      n[2] /= mag; | ||||
|   } | ||||
| } | ||||
|   | ||||
|  | ||||
|   | ||||
| @@ -35,8 +35,8 @@ | ||||
| /* | ||||
|  * mapdesc.c++ | ||||
|  * | ||||
|  * $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
|  * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/internals/mapdesc.cc,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
|  * $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
|  * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/internals/mapdesc.cc,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| @@ -372,13 +372,13 @@ Mapdesc::xformAndCullCheck( | ||||
| 	    unsigned int bits = clipbits( cpts ); | ||||
| 	    outbits |= bits; | ||||
| 	    inbits &= bits; | ||||
| 	    if( ( outbits == mask ) && ( inbits != mask ) ) return CULL_ACCEPT; | ||||
| 	    if( ( outbits == (unsigned int)mask ) && ( inbits != (unsigned int)mask ) ) return CULL_ACCEPT; | ||||
| 	}  | ||||
|     } | ||||
|  | ||||
|     if( outbits != mask ) { | ||||
|     if( outbits != (unsigned int)mask ) { | ||||
| 	return CULL_TRIVIAL_REJECT; | ||||
|     } else if( inbits == mask ) { | ||||
|     } else if( inbits == (unsigned int)mask ) { | ||||
| 	return CULL_TRIVIAL_ACCEPT; | ||||
|     } else { | ||||
| 	return CULL_ACCEPT; | ||||
| @@ -404,13 +404,13 @@ Mapdesc::cullCheck( REAL *pts, int uorder, int ustride, int vorder, int vstride | ||||
| 	    unsigned int bits = clipbits( q ); | ||||
| 	    outbits |= bits; | ||||
| 	    inbits &= bits; | ||||
| 	    if( ( outbits == mask ) && ( inbits != mask ) ) return CULL_ACCEPT; | ||||
| 	    if( ( outbits == (unsigned int)mask ) && ( inbits != (unsigned int)mask ) ) return CULL_ACCEPT; | ||||
| 	}  | ||||
|     } | ||||
|  | ||||
|     if( outbits != mask ) { | ||||
|     if( outbits != (unsigned int)mask ) { | ||||
| 	return CULL_TRIVIAL_REJECT; | ||||
|     } else if( inbits == mask ) { | ||||
|     } else if( inbits == (unsigned int)mask ) { | ||||
| 	return CULL_TRIVIAL_ACCEPT; | ||||
|     } else { | ||||
| 	return CULL_ACCEPT; | ||||
| @@ -434,12 +434,12 @@ Mapdesc::cullCheck( REAL *pts, int order, int stride ) | ||||
| 	unsigned int bits = clipbits( p ); | ||||
| 	outbits |= bits; | ||||
| 	inbits &= bits; | ||||
| 	if( ( outbits == mask ) && ( inbits != mask ) ) return CULL_ACCEPT; | ||||
| 	if( ( outbits == (unsigned int)mask ) && ( inbits != (unsigned int)mask ) ) return CULL_ACCEPT; | ||||
|     } | ||||
|  | ||||
|     if( outbits != mask ) { | ||||
|     if( outbits != (unsigned int)mask ) { | ||||
| 	return CULL_TRIVIAL_REJECT; | ||||
|     } else if( inbits == mask ) { | ||||
|     } else if( inbits == (unsigned int)mask ) { | ||||
| 	return CULL_TRIVIAL_ACCEPT; | ||||
|     } else { | ||||
| 	return CULL_ACCEPT; | ||||
|   | ||||
| @@ -35,8 +35,8 @@ | ||||
| /* | ||||
|  * mesher.c++ | ||||
|  * | ||||
|  * $Date: 2001/08/07 17:34:11 $ $Revision: 1.2 $ | ||||
|  * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/internals/mesher.cc,v 1.2 2001/08/07 17:34:11 brianp Exp $ | ||||
|  * $Date: 2001/11/29 16:38:27 $ $Revision: 1.2.2.1 $ | ||||
|  * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/internals/mesher.cc,v 1.2.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
|  */ | ||||
|  | ||||
| #include "glimports.h" | ||||
| @@ -82,7 +82,7 @@ Mesher::init( unsigned int npts ) | ||||
| inline void | ||||
| Mesher::push( GridTrimVertex *gt ) | ||||
| { | ||||
|     assert( itop+1 != stacksize ); | ||||
|     assert( itop+1 != (int)stacksize ); | ||||
|     vdata[++itop] = gt; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -35,8 +35,8 @@ | ||||
| /* | ||||
|  * sorter.c++ | ||||
|  * | ||||
|  * $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
|  * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/internals/sorter.cc,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
|  * $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
|  * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/internals/sorter.cc,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
|  */ | ||||
|  | ||||
| #include "glimports.h" | ||||
| @@ -84,7 +84,7 @@ Sorter::qs1( char *a,  char *l ) | ||||
|     unsigned int n; | ||||
|  | ||||
| start: | ||||
|     if((n=l-a) <= es) | ||||
|     if((n=l-a) <= (unsigned int)es) | ||||
| 	    return; | ||||
|     n = es * (n / (2*es)); | ||||
|     hp = lp = a+n; | ||||
|   | ||||
| @@ -31,10 +31,10 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
| ** $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/directedLine.cc,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/directedLine.cc,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
| */ | ||||
|  | ||||
| #include <stdlib.h> | ||||
| @@ -596,7 +596,7 @@ Real directedLine::polyArea() | ||||
|       y2 = temp->next->head()[1]; | ||||
|       ret += -( x2*y1-x1*y2); | ||||
|     } | ||||
|   return 0.5*ret; | ||||
|   return Real(0.5)*ret; | ||||
| } | ||||
|  | ||||
| /*******************split or combine polygons begin********************/ | ||||
|   | ||||
| @@ -31,10 +31,10 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
| ** $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/partitionY.cc,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/partitionY.cc,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
| */ | ||||
|  | ||||
| #include <stdlib.h> | ||||
| @@ -231,7 +231,7 @@ Int sweepRangeEqual(sweepRange* src1, sweepRange* src2) | ||||
|  */ | ||||
| inline/*static*/ Real intersectHoriz(Real x1, Real y1, Real x2, Real y2, Real y) | ||||
| { | ||||
|   return ((y2==y1)? (x1+x2)*0.5 : x1 + ((y-y1)/(y2-y1)) * (x2-x1)); | ||||
|   return ((y2==y1)? (x1+x2)*Real(0.5) : x1 + ((y-y1)/(y2-y1)) * (x2-x1)); | ||||
| /* | ||||
|   if(y2 == y1) return (x1+x2)*0.5; | ||||
|   else return x1 + ((y-y1)/(y2-y1)) * (x2-x1); | ||||
| @@ -309,7 +309,7 @@ static Int compEdges(directedLine *e1, directedLine *e2) | ||||
|   Real Ymax = min(e1_Ymax, e2_Ymax); | ||||
|   Real Ymin = max(e1_Ymin, e2_Ymin); | ||||
|      | ||||
|   Real y = 0.5*(Ymax + Ymin); | ||||
|   Real y = Real(0.5)*(Ymax + Ymin); | ||||
|  | ||||
| /*  Real x1 = intersectHoriz(e1->head()[0], e1->head()[1], e1->tail()[0], e1->tail()[1], y); | ||||
|   Real x2 = intersectHoriz(e2->head()[0], e2->head()[1], e2->tail()[0], e2->tail()[1], y); | ||||
|   | ||||
| @@ -31,10 +31,10 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
| ** $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/polyDBG.cc,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/polyDBG.cc,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
| */ | ||||
|  | ||||
| #include <stdlib.h> | ||||
| @@ -395,7 +395,7 @@ poly->printList(); | ||||
| */ | ||||
|   /*for debug purpose*/ | ||||
|   assert( (DBG_rayIntersectPoly(v,1,0,poly) % 2 ) | ||||
| 	 == (DBG_rayIntersectPoly(v,1,0.1234, poly) % 2 ) | ||||
| 	 == (DBG_rayIntersectPoly(v,1,Real(0.1234), poly) % 2 ) | ||||
| 	 ); | ||||
|   if(DBG_rayIntersectPoly(v, 1, 0, poly) % 2 == 1) | ||||
|     return 1;  | ||||
|   | ||||
| @@ -31,20 +31,24 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
| ** $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/polyUtil.h,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/polyUtil.h,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
| */ | ||||
|  | ||||
| #ifndef _POLYUTIL_H | ||||
| #define _POLYUTIL_H | ||||
|  | ||||
| #include "definitions.h" | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
| Real area(Real A[2], Real B[2], Real C[2]); | ||||
|  | ||||
| Int pointLeftLine(Real A[2], Real B[2],  Real P[2]); | ||||
| Int pointLeft2Lines(Real A[2], Real B[2], Real C[2], Real P[2]); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| #endif | ||||
|   | ||||
| @@ -31,16 +31,23 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
| ** $Date: 2002/04/17 19:30:19 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/quicksort.cc,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/quicksort.cc,v 1.1.2.1 2002/04/17 19:30:19 brianp Exp $ | ||||
| */ | ||||
|  | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
|  | ||||
| static void swap(void *v[], int i, int j); | ||||
|  | ||||
| static void swap(void *v[], int i, int j) | ||||
| { | ||||
|   void *temp; | ||||
|   temp = v[i]; | ||||
|   v[i] = v[j]; | ||||
|   v[j] = temp; | ||||
| } | ||||
|  | ||||
| /*as an example to use this function to | ||||
|  *sort integers, you need to supply the function | ||||
| @@ -58,7 +65,6 @@ void quicksort(void *v[], int left, int right, | ||||
| 	       int (*comp) (void *, void *)) | ||||
| { | ||||
|   int i, last; | ||||
|   void swap(void *v[], int , int); | ||||
|   if(left >= right) /*do nothing if array contains */ | ||||
|     return;         /*fewer than two elements*/ | ||||
|    | ||||
| @@ -71,12 +77,3 @@ void quicksort(void *v[], int left, int right, | ||||
|   quicksort(v, left, last-1, comp); | ||||
|   quicksort(v, last+1, right, comp); | ||||
| } | ||||
|  | ||||
| void swap(void *v[], int i, int j) | ||||
| { | ||||
|   void *temp; | ||||
|   temp = v[i]; | ||||
|   v[i] = v[j]; | ||||
|   v[j] = temp; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -31,10 +31,10 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
| ** $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/sampleCompBot.cc,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/sampleCompBot.cc,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
| */ | ||||
|  | ||||
| #include <stdlib.h> | ||||
| @@ -327,7 +327,7 @@ Int findBotSeparator(vertexArray* leftChain, | ||||
|     { | ||||
|       oldLeftI = leftCorner-1; | ||||
|       oldRightI = rightCorner; | ||||
|       leftMax = leftChain->getVertex(leftCorner)[0] - 1.0 ; //initilize to be left of leftCorner | ||||
|       leftMax = leftChain->getVertex(leftCorner)[0] - Real(1.0) ; //initilize to be left of leftCorner | ||||
|       rightMin = rightChain->getVertex(rightCorner)[0];  | ||||
|     } | ||||
|   else //rightlower | ||||
| @@ -335,7 +335,7 @@ Int findBotSeparator(vertexArray* leftChain, | ||||
|       oldLeftI = leftCorner; | ||||
|       oldRightI = rightCorner-1; | ||||
|       leftMax = leftChain->getVertex(leftCorner)[0]; | ||||
|       rightMin = rightChain->getVertex(rightCorner)[0] + 1.0; | ||||
|       rightMin = rightChain->getVertex(rightCorner)[0] + Real(1.0); | ||||
|     } | ||||
|  | ||||
|   //i: the current working leftChain Index | ||||
|   | ||||
| @@ -31,10 +31,10 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
| ** $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/sampleCompTop.cc,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/sampleCompTop.cc,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
| */ | ||||
|  | ||||
| #include <stdlib.h> | ||||
| @@ -343,7 +343,7 @@ Int findTopSeparator(vertexArray* leftChain, | ||||
|     { | ||||
|       oldLeftI = leftEndIndex+1; | ||||
|       oldRightI = rightEndIndex; | ||||
|       leftMax =  leftChain->getVertex(leftEndIndex)[0] - 1.0; //initilza to left of leftU | ||||
|       leftMax =  leftChain->getVertex(leftEndIndex)[0] - Real(1.0); //initilza to left of leftU | ||||
|       rightMin = rightChain->getVertex(rightEndIndex)[0]; | ||||
|     } | ||||
|   else | ||||
| @@ -351,7 +351,7 @@ Int findTopSeparator(vertexArray* leftChain, | ||||
|       oldLeftI = leftEndIndex; | ||||
|       oldRightI = rightEndIndex+1; | ||||
|       leftMax =  leftChain->getVertex(leftEndIndex)[0];  | ||||
|       rightMin = rightChain->getVertex(rightEndIndex)[0] + 1.0;       | ||||
|       rightMin = rightChain->getVertex(rightEndIndex)[0] + Real(1.0);       | ||||
|     } | ||||
|    | ||||
|   //i: the current working leftChain index,  | ||||
| @@ -826,19 +826,19 @@ static void sampleCompTopSimpleOpt(gridWrap* grid, | ||||
|          //find l in [j, k-1] so that dec_chain[l][0] 0 is closest to | ||||
|          // inc_chain[i] | ||||
|          int l; | ||||
|          Real tempI = j; | ||||
|          Real tempMin = fabs(inc_chain->getVertex(i)[0] - dec_chain->getVertex(j)[0]); | ||||
|          Real tempI = Real(j); | ||||
|          Real tempMin = (Real)fabs(inc_chain->getVertex(i)[0] - dec_chain->getVertex(j)[0]); | ||||
|          for(l=j+1; l<= k-1; l++) | ||||
| 	   { | ||||
| 	     if(fabs(inc_chain->getVertex(i)[0] - dec_chain->getVertex(l)[0]) | ||||
| 		<= tempMin) | ||||
| 	       { | ||||
| 		 tempMin = fabs(inc_chain->getVertex(i)[0] - dec_chain->getVertex(l)[0]); | ||||
| 		 tempI = l; | ||||
| 		 tempMin = (Real)fabs(inc_chain->getVertex(i)[0] - dec_chain->getVertex(l)[0]); | ||||
| 		 tempI = (Real)l; | ||||
| 	       } | ||||
| 	   } | ||||
| 	 //inc_chain[i] and dec_chain[tempI] are connected. | ||||
| 	 monoTriangulationRecGenOpt(dec_chain->getVertex(tempI), | ||||
| 	 monoTriangulationRecGenOpt(dec_chain->getVertex((int)tempI), | ||||
| 				    botVertex, | ||||
| 				    inc_chain, i, inc_end, | ||||
| 				    dec_chain, (int)(tempI+1), dec_end, | ||||
| @@ -866,12 +866,12 @@ static void sampleCompTopSimpleOpt(gridWrap* grid, | ||||
| 	  //inc_chain[l][0] is the closet to dec_chain[j][0] | ||||
| 	  int tempI = i; | ||||
| 	  int l; | ||||
| 	  Real tempMin = fabs(inc_chain->getVertex(i)[0] - dec_chain->getVertex(j)[0]); | ||||
| 	  Real tempMin = (Real)fabs(inc_chain->getVertex(i)[0] - dec_chain->getVertex(j)[0]); | ||||
| 	  for(l=i+1; l<=k-1; l++) | ||||
| 	    { | ||||
| 	      if(fabs(inc_chain->getVertex(l)[0] - dec_chain->getVertex(j)[0]) <= tempMin) | ||||
| 		{ | ||||
| 		  tempMin = fabs(inc_chain->getVertex(l)[0] - dec_chain->getVertex(j)[0]); | ||||
| 		  tempMin = (Real)fabs(inc_chain->getVertex(l)[0] - dec_chain->getVertex(j)[0]); | ||||
| 		  tempI = l; | ||||
| 		} | ||||
| 	    }				 	       | ||||
|   | ||||
| @@ -31,10 +31,10 @@ | ||||
| ** published by SGI, but has not been independently verified as being | ||||
| ** compliant with the OpenGL(R) version 1.2.1 Specification. | ||||
| ** | ||||
| ** $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $ | ||||
| ** $Date: 2001/11/29 16:38:27 $ $Revision: 1.1.2.1 $ | ||||
| */ | ||||
| /* | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/sampledLine.cc,v 1.1 2001/03/17 00:25:41 brianp Exp $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/nurbtess/sampledLine.cc,v 1.1.2.1 2001/11/29 16:38:27 kschultz Exp $ | ||||
| */ | ||||
|  | ||||
| #include <stdlib.h> | ||||
| @@ -96,7 +96,6 @@ sampledLine::sampledLine(Int n_points, Real2 pts[]) | ||||
|  | ||||
| sampledLine::sampledLine(Real pt1[2], Real pt2[2]) | ||||
| { | ||||
|   int i; | ||||
|   npoints = 2; | ||||
|   points = (Real2*) malloc(sizeof(Real2) * 2); | ||||
|   assert(points); | ||||
|   | ||||
| @@ -35,14 +35,14 @@ | ||||
| /* | ||||
| ** Author: Eric Veach, July 1994. | ||||
| ** | ||||
| ** $Date: 2001/07/20 11:20:32 $ $Revision: 1.2 $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libtess/memalloc.h,v 1.2 2001/07/20 11:20:32 joukj Exp $ | ||||
| ** $Date: 2001/11/30 20:12:38 $ $Revision: 1.2.2.1 $ | ||||
| ** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libtess/memalloc.h,v 1.2.2.1 2001/11/30 20:12:38 kschultz Exp $ | ||||
| */ | ||||
|  | ||||
| #ifndef __memalloc_simple_h_ | ||||
| #define __memalloc_simple_h_ | ||||
|  | ||||
| #ifdef __VMS | ||||
| #if defined(__VMS) || defined(darwin) | ||||
| # include <stdlib.h> | ||||
| #else | ||||
| # include <malloc.h> | ||||
|   | ||||
							
								
								
									
										114
									
								
								src/glut/dos/Makefile.DJ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								src/glut/dos/Makefile.DJ
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,114 @@ | ||||
| # 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. | ||||
|  | ||||
| # DOS/DJGPP glut makefile v1.0 for Mesa 4.0 | ||||
| # | ||||
| #  Copyright (C) 2002 - Borca Daniel | ||||
| #  Email : dborca@yahoo.com | ||||
| #  Web   : http://www.geocities.com/dborca | ||||
|  | ||||
|  | ||||
| .PHONY: all clean | ||||
|  | ||||
| TOP = .. | ||||
| CC = gcc | ||||
| CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=$(CPU) -ffast-math -O2 | ||||
| AR = ar | ||||
| ARFLAGS = ruv | ||||
| LIBDIR = $(TOP)/lib | ||||
|  | ||||
| ifeq ($(wildcard $(DJDIR)/lib/dxe2.ld),) | ||||
| DXE2GEN = | ||||
| else | ||||
| DXE2GEN = $(wildcard $(addsuffix /dxe2gen.exe,$(subst ;, ,$(PATH)))) | ||||
| endif | ||||
|  | ||||
| GLUT_LIB = libglut.a | ||||
| GLUT_DXE = glut.dxe | ||||
| GLUT_IMP = libiglut.a | ||||
|  | ||||
| CORE_SOURCES = \ | ||||
| 	callback.c \ | ||||
| 	color.c \ | ||||
| 	font.c \ | ||||
| 	globals.c \ | ||||
| 	init.c \ | ||||
| 	menu.c \ | ||||
| 	models.c \ | ||||
| 	overlay.c \ | ||||
| 	state.c \ | ||||
| 	teapot.c \ | ||||
| 	window.c | ||||
|  | ||||
| PC_HW_SOURCES = \ | ||||
| 	PC_HW/pc_hw.c \ | ||||
| 	PC_HW/pc_keyb.c \ | ||||
| 	PC_HW/pc_mouse.c \ | ||||
| 	PC_HW/pc_timer.c \ | ||||
| 	PC_HW/pc_irq.S | ||||
|  | ||||
| SOURCES = $(CORE_SOURCES) $(PC_HW_SOURCES) | ||||
|  | ||||
| OBJECTS = $(addsuffix .o,$(basename $(SOURCES))) | ||||
|  | ||||
| .c.o: | ||||
| 	gcc -o $@ -c $(CFLAGS) $< | ||||
| .S.o: | ||||
| 	gcc -o $@ -c $(CFLAGS) $< | ||||
| .s.o: | ||||
| 	gcc -o $@ -c $(CFLAGS) $(<:.s=.S) | ||||
|  | ||||
| all: $(LIBDIR)/$(GLUT_LIB) $(LIBDIR)/$(GLUT_DXE) $(LIBDIR)/$(GLUT_IMP) | ||||
|  | ||||
| $(LIBDIR)/$(GLUT_LIB): $(OBJECTS) | ||||
| 	$(AR) $(ARFLAGS) $(LIBDIR)/$(GLUT_LIB) $(OBJECTS) | ||||
|  | ||||
| $(LIBDIR)/$(GLUT_DXE) $(LIBDIR)/$(GLUT_IMP): $(OBJECTS) | ||||
| ifeq ($(DXE2GEN),) | ||||
| 	$(warning Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN) | ||||
| 	$(warning somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.) | ||||
| else | ||||
| 	dxe2gen -o $(LIBDIR)/$(GLUT_DXE) -I $(LIBDIR)/$(GLUT_IMP) $(OBJECTS) -D "Mesa DOS GLUT" -U | ||||
| endif | ||||
|  | ||||
| clean: | ||||
| 	-$(RM) *.o | ||||
| 	-$(RM) PC_HW\*.o | ||||
|  | ||||
| callback.o: callback.c ../include/GL/glut.h internal.h PC_HW/pc_hw.h | ||||
| color.o: color.c ../include/GL/glut.h | ||||
| font.o: font.c ../include/GL/glut.h | ||||
| globals.o: globals.c ../include/GL/glut.h internal.h PC_HW/pc_hw.h | ||||
| init.o: init.c ../include/GL/glut.h internal.h PC_HW/pc_hw.h | ||||
| menu.o: menu.c ../include/GL/glut.h | ||||
| models.o: models.c ../include/GL/glut.h | ||||
| overlay.o: overlay.c ../include/GL/glut.h | ||||
| state.o: state.c ../include/GL/glut.h internal.h PC_HW/pc_hw.h | ||||
| teapot.o: teapot.c ../include/GL/glut.h | ||||
| window.o: window.c ../include/GL/glut.h ../include/GL/dmesa.h internal.h \ | ||||
|   PC_HW/pc_hw.h | ||||
|  | ||||
| PC_HW/pc_hw.o: PC_HW/pc_hw.c PC_HW/pc_hw.h | ||||
| PC_HW/pc_keyb.o: PC_HW/pc_keyb.c PC_HW/pc_hw.h | ||||
| PC_HW/pc_mouse.o: PC_HW/pc_mouse.c PC_HW/pc_hw.h | ||||
| PC_HW/pc_timer.o: PC_HW/pc_timer.c PC_HW/pc_hw.h | ||||
| PC_HW/pc_irq.o: PC_HW/pc_irq.S | ||||
							
								
								
									
										141
									
								
								src/glut/dos/PC_HW/pc_hw.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								src/glut/dos/PC_HW/pc_hw.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,141 @@ | ||||
| /* | ||||
|  * PC/HW routine collection v1.0 for DOS/DJGPP | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include <dpmi.h> | ||||
| #include <fcntl.h> | ||||
| #include <sys/stat.h> /* for mode definitions */ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| #include "pc_hw.h" | ||||
|  | ||||
| /* | ||||
|  * atexit | ||||
|  */ | ||||
| #define MAX_ATEXIT 32 | ||||
|  | ||||
| static volatile int atexitcnt; | ||||
| static VFUNC atexittbl[MAX_ATEXIT]; | ||||
|  | ||||
| static void __attribute__((destructor)) doexit (void) | ||||
| { | ||||
|  while (atexitcnt) atexittbl[--atexitcnt](); | ||||
| } | ||||
|  | ||||
| int pc_clexit (VFUNC f) | ||||
| { | ||||
|  int i; | ||||
|  | ||||
|  for (i=0;i<atexitcnt;i++) { | ||||
|      if (atexittbl[i]==f) { | ||||
|         for (atexitcnt--;i<atexitcnt;i++) atexittbl[i] = atexittbl[i+1]; | ||||
|         atexittbl[i] = 0; | ||||
|         return 0; | ||||
|      } | ||||
|  } | ||||
|  return -1; | ||||
| } | ||||
|  | ||||
| int pc_atexit (VFUNC f) | ||||
| { | ||||
|  pc_clexit(f); | ||||
|  if (atexitcnt<MAX_ATEXIT) { | ||||
|     atexittbl[atexitcnt++] = f; | ||||
|     return 0; | ||||
|  } | ||||
|  return -1; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * locked memory allocation | ||||
|  */ | ||||
| void *pc_malloc (size_t size) | ||||
| { | ||||
|  void *p = malloc(size); | ||||
|  | ||||
|  if (p) { | ||||
|     if (_go32_dpmi_lock_data(p, size)) { | ||||
|        free(p); | ||||
|        return NULL; | ||||
|     } | ||||
|  } | ||||
|  | ||||
|  return p; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * standard redirection | ||||
|  */ | ||||
| static char errname[L_tmpnam]; | ||||
| static char outname[L_tmpnam]; | ||||
|  | ||||
| static int h_out, h_outbak; | ||||
| static int h_err, h_errbak; | ||||
|  | ||||
| void pc_open_stderr (void) | ||||
| { | ||||
|  if (tmpnam(errname)) { | ||||
|     h_err = open(errname, O_WRONLY |/* O_BINARY |*/ O_CREAT | O_TRUNC, | ||||
|                           S_IREAD | S_IWRITE); | ||||
|     h_errbak = dup(2); | ||||
|     fflush(stderr); | ||||
|     dup2(h_err, 2); | ||||
|  } | ||||
| } | ||||
|  | ||||
| void pc_close_stderr (void) | ||||
| { | ||||
|  FILE *f; | ||||
|  char *line = alloca(512); | ||||
|   | ||||
|  dup2(h_errbak, 2); | ||||
|  close(h_err); | ||||
|  close(h_errbak); | ||||
|   | ||||
|  if ((f=fopen(errname, "r"))!=NULL) { | ||||
|     while (fgets(line, 512, f)) { | ||||
|           fputs(line, stderr); | ||||
|     } | ||||
|     fclose(f); | ||||
|  } | ||||
|  | ||||
|  remove(errname); | ||||
| } | ||||
|  | ||||
| void pc_open_stdout (void) | ||||
| { | ||||
|  if (tmpnam(outname)) { | ||||
|     h_out = open(outname, O_WRONLY |/* O_BINARY |*/ O_CREAT | O_TRUNC, | ||||
|                           S_IREAD | S_IWRITE); | ||||
|     h_outbak = dup(1); | ||||
|     fflush(stdout); | ||||
|     dup2(h_out, 1); | ||||
|  } | ||||
| } | ||||
|  | ||||
| void pc_close_stdout (void) | ||||
| { | ||||
|  FILE *f; | ||||
|  char *line = alloca(512); | ||||
|   | ||||
|  dup2(h_outbak, 1); | ||||
|  close(h_out); | ||||
|  close(h_outbak); | ||||
|   | ||||
|  if ((f=fopen(outname, "r"))!=NULL) { | ||||
|     while (fgets(line, 512, f)) { | ||||
|           fputs(line, stdout); | ||||
|     } | ||||
|     fclose(f); | ||||
|  } | ||||
|  | ||||
|  remove(outname); | ||||
| } | ||||
							
								
								
									
										225
									
								
								src/glut/dos/PC_HW/pc_hw.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										225
									
								
								src/glut/dos/PC_HW/pc_hw.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,225 @@ | ||||
| /* | ||||
|  * PC/HW routine collection v1.0 for DOS/DJGPP | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef PC_HW_H_included | ||||
| #define PC_HW_H_included | ||||
|  | ||||
| #include <dpmi.h> | ||||
| #include <stdlib.h> | ||||
|  | ||||
| /* | ||||
|  * misc C definitions | ||||
|  */ | ||||
| #define FALSE 0 | ||||
| #define TRUE !FALSE | ||||
|  | ||||
| #define MIN(x,y)     (((x) < (y)) ? (x) : (y)) | ||||
| #define MAX(x,y)     (((x) > (y)) ? (x) : (y)) | ||||
| #define MID(x,y,z)   MAX((x), MIN((y), (z))) | ||||
|  | ||||
| typedef void (*VFUNC) (void); | ||||
| typedef void (*PFUNC) (void *); | ||||
| typedef void (*MFUNC) (int x, int y, int b); | ||||
|  | ||||
| /* | ||||
|  * atexit | ||||
|  */ | ||||
| int pc_atexit (VFUNC f); | ||||
| int pc_clexit (VFUNC f); | ||||
|  | ||||
| /* | ||||
|  * locked memory | ||||
|  */ | ||||
| #define ENDOFUNC(x)    static void x##_end() { } | ||||
| #define LOCKFUNC(x)    _go32_dpmi_lock_code((void *)x, (long)x##_end - (long)x) | ||||
| #define LOCKDATA(x)    _go32_dpmi_lock_data((void *)&x, sizeof(x)) | ||||
|  | ||||
| void *pc_malloc (size_t size); | ||||
|  | ||||
| /* | ||||
|  * IRQ | ||||
|  */ | ||||
| #define ENABLE()  __asm__ __volatile__ ("sti") | ||||
| #define DISABLE() __asm__ __volatile__ ("cli") | ||||
|  | ||||
| extern int pc_install_irq (int i, int (*handler) ()); | ||||
| extern int pc_remove_irq (int i); | ||||
|  | ||||
| /* | ||||
|  * keyboard | ||||
|  */ | ||||
| #define KB_SHIFT_FLAG         0x0001 | ||||
| #define KB_CTRL_FLAG          0x0002 | ||||
| #define KB_ALT_FLAG           0x0004 | ||||
| #define KB_LWIN_FLAG          0x0008 | ||||
| #define KB_RWIN_FLAG          0x0010 | ||||
| #define KB_MENU_FLAG          0x0020 | ||||
| #define KB_SCROLOCK_FLAG      0x0100 | ||||
| #define KB_NUMLOCK_FLAG       0x0200 | ||||
| #define KB_CAPSLOCK_FLAG      0x0400 | ||||
| #define KB_INALTSEQ_FLAG      0x0800 | ||||
| #define KB_ACCENT1_FLAG       0x1000 | ||||
| #define KB_ACCENT2_FLAG       0x2000 | ||||
| #define KB_ACCENT3_FLAG       0x4000 | ||||
| #define KB_ACCENT4_FLAG       0x8000 | ||||
|  | ||||
| #define KEY_A                 1 | ||||
| #define KEY_B                 2 | ||||
| #define KEY_C                 3 | ||||
| #define KEY_D                 4 | ||||
| #define KEY_E                 5 | ||||
| #define KEY_F                 6 | ||||
| #define KEY_G                 7 | ||||
| #define KEY_H                 8 | ||||
| #define KEY_I                 9 | ||||
| #define KEY_J                 10 | ||||
| #define KEY_K                 11 | ||||
| #define KEY_L                 12 | ||||
| #define KEY_M                 13 | ||||
| #define KEY_N                 14 | ||||
| #define KEY_O                 15 | ||||
| #define KEY_P                 16 | ||||
| #define KEY_Q                 17 | ||||
| #define KEY_R                 18 | ||||
| #define KEY_S                 19 | ||||
| #define KEY_T                 20 | ||||
| #define KEY_U                 21 | ||||
| #define KEY_V                 22 | ||||
| #define KEY_W                 23 | ||||
| #define KEY_X                 24 | ||||
| #define KEY_Y                 25 | ||||
| #define KEY_Z                 26 | ||||
| #define KEY_0                 27 | ||||
| #define KEY_1                 28 | ||||
| #define KEY_2                 29 | ||||
| #define KEY_3                 30 | ||||
| #define KEY_4                 31 | ||||
| #define KEY_5                 32 | ||||
| #define KEY_6                 33 | ||||
| #define KEY_7                 34 | ||||
| #define KEY_8                 35 | ||||
| #define KEY_9                 36 | ||||
| #define KEY_0_PAD             37 | ||||
| #define KEY_1_PAD             38 | ||||
| #define KEY_2_PAD             39 | ||||
| #define KEY_3_PAD             40 | ||||
| #define KEY_4_PAD             41 | ||||
| #define KEY_5_PAD             42 | ||||
| #define KEY_6_PAD             43 | ||||
| #define KEY_7_PAD             44 | ||||
| #define KEY_8_PAD             45 | ||||
| #define KEY_9_PAD             46 | ||||
| #define KEY_F1                47 | ||||
| #define KEY_F2                48 | ||||
| #define KEY_F3                49 | ||||
| #define KEY_F4                50 | ||||
| #define KEY_F5                51 | ||||
| #define KEY_F6                52 | ||||
| #define KEY_F7                53 | ||||
| #define KEY_F8                54 | ||||
| #define KEY_F9                55 | ||||
| #define KEY_F10               56 | ||||
| #define KEY_F11               57 | ||||
| #define KEY_F12               58 | ||||
| #define KEY_ESC               59 | ||||
| #define KEY_TILDE             60 | ||||
| #define KEY_MINUS             61 | ||||
| #define KEY_EQUALS            62 | ||||
| #define KEY_BACKSPACE         63 | ||||
| #define KEY_TAB               64 | ||||
| #define KEY_OPENBRACE         65 | ||||
| #define KEY_CLOSEBRACE        66 | ||||
| #define KEY_ENTER             67 | ||||
| #define KEY_COLON             68 | ||||
| #define KEY_QUOTE             69 | ||||
| #define KEY_BACKSLASH         70 | ||||
| #define KEY_BACKSLASH2        71 | ||||
| #define KEY_COMMA             72 | ||||
| #define KEY_STOP              73 | ||||
| #define KEY_SLASH             74 | ||||
| #define KEY_SPACE             75 | ||||
| #define KEY_INSERT            76 | ||||
| #define KEY_DEL               77 | ||||
| #define KEY_HOME              78 | ||||
| #define KEY_END               79 | ||||
| #define KEY_PGUP              80 | ||||
| #define KEY_PGDN              81 | ||||
| #define KEY_LEFT              82 | ||||
| #define KEY_RIGHT             83 | ||||
| #define KEY_UP                84 | ||||
| #define KEY_DOWN              85 | ||||
| #define KEY_SLASH_PAD         86 | ||||
| #define KEY_ASTERISK          87 | ||||
| #define KEY_MINUS_PAD         88 | ||||
| #define KEY_PLUS_PAD          89 | ||||
| #define KEY_DEL_PAD           90 | ||||
| #define KEY_ENTER_PAD         91 | ||||
| #define KEY_PRTSCR            92 | ||||
| #define KEY_PAUSE             93 | ||||
| #define KEY_ABNT_C1           94 | ||||
| #define KEY_YEN               95 | ||||
| #define KEY_KANA              96 | ||||
| #define KEY_CONVERT           97 | ||||
| #define KEY_NOCONVERT         98 | ||||
| #define KEY_AT                99 | ||||
| #define KEY_CIRCUMFLEX        100 | ||||
| #define KEY_COLON2            101 | ||||
| #define KEY_KANJI             102 | ||||
|  | ||||
| #define KEY_MODIFIERS         103 | ||||
|  | ||||
| #define KEY_LSHIFT            103 | ||||
| #define KEY_RSHIFT            104 | ||||
| #define KEY_LCONTROL          105 | ||||
| #define KEY_RCONTROL          106 | ||||
| #define KEY_ALT               107 | ||||
| #define KEY_ALTGR             108 | ||||
| #define KEY_LWIN              109 | ||||
| #define KEY_RWIN              110 | ||||
| #define KEY_MENU              111 | ||||
| #define KEY_SCRLOCK           112 | ||||
| #define KEY_NUMLOCK           113 | ||||
| #define KEY_CAPSLOCK          114 | ||||
|  | ||||
| #define KEY_MAX               115 | ||||
|  | ||||
| int pc_install_keyb (void); | ||||
| void pc_remove_keyb (void); | ||||
| int pc_keypressed (void); | ||||
| int pc_readkey (void); | ||||
| int pc_keydown (int code); | ||||
|  | ||||
| /* | ||||
|  * timer | ||||
|  */ | ||||
| int pc_install_int (PFUNC func, void *parm, unsigned int freq); | ||||
| void pc_remove_timer (void); | ||||
|  | ||||
| /* | ||||
|  * mouse | ||||
|  */ | ||||
| int pc_install_mouse (void); | ||||
| void pc_remove_mouse (void); | ||||
| MFUNC pc_install_mouse_handler (MFUNC handler); | ||||
| void pc_mouse_area (int x1, int y1, int x2, int y2); | ||||
| void pc_mouse_speed (int xspeed, int yspeed); | ||||
| int pc_query_mouse (int *x, int *y); | ||||
| void pc_show_mouse (void); | ||||
| void pc_scare_mouse (void); | ||||
| void pc_unscare_mouse (void); | ||||
|  | ||||
| /* | ||||
|  * standard redirection | ||||
|  */ | ||||
| void pc_open_stdout (void); | ||||
| void pc_open_stderr (void); | ||||
| void pc_close_stdout (void); | ||||
| void pc_close_stderr (void); | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										180
									
								
								src/glut/dos/PC_HW/pc_irq.S
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								src/glut/dos/PC_HW/pc_irq.S
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,180 @@ | ||||
| /* | ||||
|  * PC/HW routine collection v1.0 for DOS/DJGPP | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| 		.file	"pc_irq.S" | ||||
|  | ||||
| 		.text | ||||
|  | ||||
| #define	IRQ_STACK_SIZE	16384 | ||||
|  | ||||
| #define	IRQ_WRAPPER_LEN	(__irq_wrapper_1-__irq_wrapper_0) | ||||
| #define	IRQ_OLD		(__irq_old_0-__irq_wrapper_0) | ||||
| #define	IRQ_HOOK	(__irq_hook_0-__irq_wrapper_0) | ||||
| #define	IRQ_STACK	(__irq_stack_0-__irq_wrapper_0) | ||||
|  | ||||
| 		.balign	4 | ||||
| common: | ||||
| 		movw	$0x0400, %ax | ||||
| 		int	$0x31 | ||||
|  | ||||
| 		movl	%ss:8(%ebp), %ebx | ||||
| 		cmpl	$15, %ebx | ||||
| 		jbe	0f | ||||
| 	fail: | ||||
| 		orl	$-1, %eax | ||||
| 		popl	%edi | ||||
| 		popl	%ebx | ||||
| 		leave | ||||
| 		ret | ||||
|  | ||||
| 	0: | ||||
| 		movl	%ebx, %edi | ||||
| 		imull	$IRQ_WRAPPER_LEN, %edi | ||||
| 		addl	$__irq_wrapper_0, %edi | ||||
|  | ||||
| 		cmpb	$7, %bl | ||||
| 		jbe	1f | ||||
| 		movb	%dl, %dh | ||||
| 		subb	$8, %dh | ||||
| 	1: | ||||
| 		addb	%dh, %bl | ||||
| 		ret | ||||
|  | ||||
| 		.balign	4 | ||||
| 		.global	_pc_install_irq | ||||
| _pc_install_irq: | ||||
| 		pushl	%ebp | ||||
| 		movl	%esp, %ebp | ||||
| 		pushl	%ebx | ||||
| 		pushl	%edi | ||||
|  | ||||
| 		call	common | ||||
|  | ||||
| 		cmpl	$0, IRQ_HOOK(%edi) | ||||
| 		jne	fail | ||||
|  | ||||
| 		pushl	$IRQ_WRAPPER_LEN | ||||
| 		pushl	%edi | ||||
| 		call	__go32_dpmi_lock_code | ||||
| 		addl	$8, %esp | ||||
| 		testl	%eax, %eax | ||||
| 		jnz	fail | ||||
|  | ||||
| 		pushl	$IRQ_STACK_SIZE | ||||
| 		call	_pc_malloc | ||||
| 		popl	%edx | ||||
| 		testl	%eax, %eax | ||||
| 		jz	fail | ||||
| 		addl	%edx, %eax | ||||
| 		movl	%eax, IRQ_STACK(%edi) | ||||
|  | ||||
| 		movl	%ss:12(%ebp), %eax | ||||
| 		movl	%eax, IRQ_HOOK(%edi) | ||||
|  | ||||
| 		movw	$0x0204, %ax | ||||
| 		int	$0x31 | ||||
| 		movl	%edx, IRQ_OLD(%edi) | ||||
| 		movw	%cx, IRQ_OLD+4(%edi) | ||||
| 		movw	$0x0205, %ax | ||||
| 		movl	%edi, %edx | ||||
| 		movl	%cs, %ecx | ||||
| 		int	$0x31 | ||||
|  | ||||
| 	done: | ||||
| 		xorl	%eax, %eax | ||||
| 		popl	%edi | ||||
| 		popl	%ebx | ||||
| 		leave | ||||
| 		ret | ||||
|  | ||||
| 		.balign	4 | ||||
| 		.global	_pc_remove_irq | ||||
| _pc_remove_irq: | ||||
| 		pushl	%ebp | ||||
| 		movl	%esp, %ebp | ||||
| 		pushl	%ebx | ||||
| 		pushl	%edi | ||||
|  | ||||
| 		call	common | ||||
|  | ||||
| 		cmpl	$0, IRQ_HOOK(%edi) | ||||
| 		je	fail | ||||
|  | ||||
| 		movl	$0, IRQ_HOOK(%edi) | ||||
|  | ||||
| 		movw	$0x0205, %ax | ||||
| 		movl	IRQ_OLD(%edi), %edx | ||||
| 		movl	IRQ_OLD+4(%edi), %ecx | ||||
| 		int	$0x31 | ||||
|  | ||||
| 		movl	IRQ_STACK(%edi), %eax | ||||
| 		subl	$IRQ_STACK_SIZE, %eax | ||||
| 		pushl	%eax | ||||
| 		call	_free | ||||
| 		popl	%eax | ||||
|  | ||||
| 		jmp	done | ||||
|  | ||||
| #define	WRAPPER(x)							   ; \ | ||||
| 		.balign	4						   ; \ | ||||
| __irq_wrapper_##x:							   ; \ | ||||
| 		pushal							   ; \ | ||||
| 		pushl	%ds						   ; \ | ||||
| 		pushl	%es						   ; \ | ||||
| 		pushl	%fs						   ; \ | ||||
| 		pushl	%gs						   ; \ | ||||
| 		movl	%ss, %ebx					   ; \ | ||||
| 		movl	%esp, %esi					   ; \ | ||||
| 		movl	%cs:___djgpp_ds_alias, %ss			   ; \ | ||||
| 		movl	%cs:__irq_stack_##x, %esp			   ; \ | ||||
| 		pushl	%ss						   ; \ | ||||
| 		pushl	%ss						   ; \ | ||||
| 		popl	%es						   ; \ | ||||
| 		popl	%ds						   ; \ | ||||
| 		movl	___djgpp_dos_sel, %fs				   ; \ | ||||
| 		pushl	%fs						   ; \ | ||||
| 		popl	%gs						   ; \ | ||||
| 		call	*__irq_hook_##x					   ; \ | ||||
| 		movl	%ebx, %ss					   ; \ | ||||
| 		movl	%esi, %esp					   ; \ | ||||
| 		testl	%eax, %eax					   ; \ | ||||
| 		popl	%gs						   ; \ | ||||
| 		popl	%fs						   ; \ | ||||
| 		popl	%es						   ; \ | ||||
| 		popl	%ds						   ; \ | ||||
| 		popal							   ; \ | ||||
| 		jz	__irq_ignore_##x				   ; \ | ||||
| __irq_bypass_##x:							   ; \ | ||||
| 		ljmp	*%cs:__irq_old_##x				   ; \ | ||||
| __irq_ignore_##x:							   ; \ | ||||
| 		iret							   ; \ | ||||
| 		.balign	4						   ; \ | ||||
| __irq_old_##x:								   ; \ | ||||
| 		.long	0, 0						   ; \ | ||||
| __irq_hook_##x:								   ; \ | ||||
| 		.long	0						   ; \ | ||||
| __irq_stack_##x:							   ; \ | ||||
| 		.long	0 | ||||
|  | ||||
| 		WRAPPER(0); | ||||
| 		WRAPPER(1); | ||||
| 		WRAPPER(2); | ||||
| 		WRAPPER(3); | ||||
| 		WRAPPER(4); | ||||
| 		WRAPPER(5); | ||||
| 		WRAPPER(6); | ||||
| 		WRAPPER(7); | ||||
| 		WRAPPER(8); | ||||
| 		WRAPPER(9); | ||||
| 		WRAPPER(10); | ||||
| 		WRAPPER(11); | ||||
| 		WRAPPER(12); | ||||
| 		WRAPPER(13); | ||||
| 		WRAPPER(14); | ||||
| 		WRAPPER(15); | ||||
							
								
								
									
										541
									
								
								src/glut/dos/PC_HW/pc_keyb.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										541
									
								
								src/glut/dos/PC_HW/pc_keyb.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,541 @@ | ||||
| /* | ||||
|  * PC/HW routine collection v1.0 for DOS/DJGPP | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include <pc.h> | ||||
| #include <sys/exceptn.h> | ||||
| #include <sys/farptr.h> | ||||
|  | ||||
| #include "pc_hw.h" | ||||
|  | ||||
|  | ||||
|  | ||||
| #define KEYB_IRQ 1 | ||||
|  | ||||
| #define KEY_BUFFER_SIZE 64 | ||||
|  | ||||
| #define KB_MODIFIERS (KB_SHIFT_FLAG | KB_CTRL_FLAG | KB_ALT_FLAG | KB_LWIN_FLAG | KB_RWIN_FLAG | KB_MENU_FLAG) | ||||
| #define KB_LED_FLAGS (KB_SCROLOCK_FLAG | KB_NUMLOCK_FLAG | KB_CAPSLOCK_FLAG) | ||||
|  | ||||
| static int keyboard_installed; | ||||
|  | ||||
| static volatile struct { | ||||
|        volatile int start, end; | ||||
|        volatile int key[KEY_BUFFER_SIZE]; | ||||
| } key_buffer; | ||||
|  | ||||
| static volatile int key_enhanced, key_pause_loop, key_shifts; | ||||
| static int leds_ok = TRUE; | ||||
| static int in_a_terrupt = FALSE; | ||||
| static volatile char pc_key[KEY_MAX]; | ||||
|  | ||||
|  | ||||
|  | ||||
| /* convert Allegro format scancodes into key_shifts flag bits */ | ||||
| static unsigned short modifier_table[KEY_MAX - KEY_MODIFIERS] = | ||||
| { | ||||
|    KB_SHIFT_FLAG,    KB_SHIFT_FLAG,    KB_CTRL_FLAG, | ||||
|    KB_CTRL_FLAG,     KB_ALT_FLAG,      KB_ALT_FLAG, | ||||
|    KB_LWIN_FLAG,     KB_RWIN_FLAG,     KB_MENU_FLAG, | ||||
|    KB_SCROLOCK_FLAG, KB_NUMLOCK_FLAG,  KB_CAPSLOCK_FLAG | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| /* lookup table for converting hardware scancodes into Allegro format */ | ||||
| static unsigned char hw_to_mycode[128] = | ||||
| { | ||||
|    /* 0x00 */  0,              KEY_ESC,        KEY_1,          KEY_2,  | ||||
|    /* 0x04 */  KEY_3,          KEY_4,          KEY_5,          KEY_6, | ||||
|    /* 0x08 */  KEY_7,          KEY_8,          KEY_9,          KEY_0,  | ||||
|    /* 0x0C */  KEY_MINUS,      KEY_EQUALS,     KEY_BACKSPACE,  KEY_TAB, | ||||
|    /* 0x10 */  KEY_Q,          KEY_W,          KEY_E,          KEY_R,  | ||||
|    /* 0x14 */  KEY_T,          KEY_Y,          KEY_U,          KEY_I, | ||||
|    /* 0x18 */  KEY_O,          KEY_P,          KEY_OPENBRACE,  KEY_CLOSEBRACE,  | ||||
|    /* 0x1C */  KEY_ENTER,      KEY_LCONTROL,   KEY_A,          KEY_S, | ||||
|    /* 0x20 */  KEY_D,          KEY_F,          KEY_G,          KEY_H,  | ||||
|    /* 0x24 */  KEY_J,          KEY_K,          KEY_L,          KEY_COLON, | ||||
|    /* 0x28 */  KEY_QUOTE,      KEY_TILDE,      KEY_LSHIFT,     KEY_BACKSLASH,  | ||||
|    /* 0x2C */  KEY_Z,          KEY_X,          KEY_C,          KEY_V, | ||||
|    /* 0x30 */  KEY_B,          KEY_N,          KEY_M,          KEY_COMMA,  | ||||
|    /* 0x34 */  KEY_STOP,       KEY_SLASH,      KEY_RSHIFT,     KEY_ASTERISK, | ||||
|    /* 0x38 */  KEY_ALT,        KEY_SPACE,      KEY_CAPSLOCK,   KEY_F1,  | ||||
|    /* 0x3C */  KEY_F2,         KEY_F3,         KEY_F4,         KEY_F5, | ||||
|    /* 0x40 */  KEY_F6,         KEY_F7,         KEY_F8,         KEY_F9,  | ||||
|    /* 0x44 */  KEY_F10,        KEY_NUMLOCK,    KEY_SCRLOCK,    KEY_7_PAD, | ||||
|    /* 0x48 */  KEY_8_PAD,      KEY_9_PAD,      KEY_MINUS_PAD,  KEY_4_PAD,  | ||||
|    /* 0x4C */  KEY_5_PAD,      KEY_6_PAD,      KEY_PLUS_PAD,   KEY_1_PAD, | ||||
|    /* 0x50 */  KEY_2_PAD,      KEY_3_PAD,      KEY_0_PAD,      KEY_DEL_PAD,  | ||||
|    /* 0x54 */  KEY_PRTSCR,     0,              KEY_BACKSLASH2, KEY_F11, | ||||
|    /* 0x58 */  KEY_F12,        0,              0,              KEY_LWIN,  | ||||
|    /* 0x5C */  KEY_RWIN,       KEY_MENU,       0,              0, | ||||
|    /* 0x60 */  0,              0,              0,              0,  | ||||
|    /* 0x64 */  0,              0,              0,              0, | ||||
|    /* 0x68 */  0,              0,              0,              0,  | ||||
|    /* 0x6C */  0,              0,              0,              0, | ||||
|    /* 0x70 */  KEY_KANA,       0,              0,              KEY_ABNT_C1,  | ||||
|    /* 0x74 */  0,              0,              0,              0, | ||||
|    /* 0x78 */  0,              KEY_CONVERT,    0,              KEY_NOCONVERT,  | ||||
|    /* 0x7C */  0,              KEY_YEN,       0,              0 | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| /* lookup table for converting extended hardware codes into Allegro format */ | ||||
| static unsigned char hw_to_mycode_ex[128] = | ||||
| { | ||||
|    /* 0x00 */  0,              KEY_ESC,        KEY_1,          KEY_2, | ||||
|    /* 0x04 */  KEY_3,          KEY_4,          KEY_5,          KEY_6, | ||||
|    /* 0x08 */  KEY_7,          KEY_8,          KEY_9,          KEY_0, | ||||
|    /* 0x0C */  KEY_MINUS,      KEY_EQUALS,     KEY_BACKSPACE,  KEY_TAB, | ||||
|    /* 0x10 */  KEY_CIRCUMFLEX, KEY_AT,         KEY_COLON2,     KEY_R, | ||||
|    /* 0x14 */  KEY_KANJI,      KEY_Y,          KEY_U,          KEY_I, | ||||
|    /* 0x18 */  KEY_O,          KEY_P,          KEY_OPENBRACE,  KEY_CLOSEBRACE, | ||||
|    /* 0x1C */  KEY_ENTER_PAD,  KEY_RCONTROL,   KEY_A,          KEY_S, | ||||
|    /* 0x20 */  KEY_D,          KEY_F,          KEY_G,          KEY_H, | ||||
|    /* 0x24 */  KEY_J,          KEY_K,          KEY_L,          KEY_COLON, | ||||
|    /* 0x28 */  KEY_QUOTE,      KEY_TILDE,      0,              KEY_BACKSLASH, | ||||
|    /* 0x2C */  KEY_Z,          KEY_X,          KEY_C,          KEY_V, | ||||
|    /* 0x30 */  KEY_B,          KEY_N,          KEY_M,          KEY_COMMA, | ||||
|    /* 0x34 */  KEY_STOP,       KEY_SLASH_PAD,  0,              KEY_PRTSCR, | ||||
|    /* 0x38 */  KEY_ALTGR,      KEY_SPACE,      KEY_CAPSLOCK,   KEY_F1, | ||||
|    /* 0x3C */  KEY_F2,         KEY_F3,         KEY_F4,         KEY_F5, | ||||
|    /* 0x40 */  KEY_F6,         KEY_F7,         KEY_F8,         KEY_F9, | ||||
|    /* 0x44 */  KEY_F10,        KEY_NUMLOCK,    KEY_PAUSE,      KEY_HOME, | ||||
|    /* 0x48 */  KEY_UP,         KEY_PGUP,       KEY_MINUS_PAD,  KEY_LEFT, | ||||
|    /* 0x4C */  KEY_5_PAD,      KEY_RIGHT,      KEY_PLUS_PAD,   KEY_END, | ||||
|    /* 0x50 */  KEY_DOWN,       KEY_PGDN,       KEY_INSERT,     KEY_DEL, | ||||
|    /* 0x54 */  KEY_PRTSCR,     0,              KEY_BACKSLASH2, KEY_F11, | ||||
|    /* 0x58 */  KEY_F12,        0,              0,              KEY_LWIN, | ||||
|    /* 0x5C */  KEY_RWIN,       KEY_MENU,       0,              0, | ||||
|    /* 0x60 */  0,              0,              0,              0, | ||||
|    /* 0x64 */  0,              0,              0,              0, | ||||
|    /* 0x68 */  0,              0,              0,              0, | ||||
|    /* 0x6C */  0,              0,              0,              0, | ||||
|    /* 0x70 */  0,              0,              0,              0, | ||||
|    /* 0x74 */  0,              0,              0,              0, | ||||
|    /* 0x78 */  0,              0,              0,              0, | ||||
|    /* 0x7C */  0,              0,              0,              0 | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| /* default mapping table for the US keyboard layout */ | ||||
| static unsigned short standard_key_ascii_table[KEY_MAX] = | ||||
| { | ||||
|    /* start */       0, | ||||
|    /* alphabet */    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', | ||||
|    /* numbers */     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', | ||||
|    /* numpad */      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', | ||||
|    /* func keys */   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, | ||||
|    /* misc chars */  27, '`', '-', '=', 8, 9, '[', ']', 13, ';', '\'', '\\', '\\', ',', '.', '/', ' ', | ||||
|    /* controls */    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, | ||||
|    /* numpad */      '/', '*', '-', '+', '.', 13, | ||||
|    /* modifiers */   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| /* capslock mapping table for the US keyboard layout */ | ||||
| static unsigned short standard_key_capslock_table[KEY_MAX] = | ||||
| { | ||||
|    /* start */       0, | ||||
|    /* alphabet */    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', | ||||
|    /* numbers */     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', | ||||
|    /* numpad */      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', | ||||
|    /* func keys */   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, | ||||
|    /* misc chars */  27, '`', '-', '=', 8, 9, '[', ']', 13, ';', '\'', '\\', '\\', ',', '.', '/', ' ', | ||||
|    /* controls */    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, | ||||
|    /* numpad */      '/', '*', '-', '+', '.', 13, | ||||
|    /* modifiers */   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| /* shifted mapping table for the US keyboard layout */ | ||||
| static unsigned short standard_key_shift_table[KEY_MAX] = | ||||
| { | ||||
|    /* start */       0, | ||||
|    /* alphabet */    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', | ||||
|    /* numbers */     ')', '!', '@', '#', '$', '%', '^', '&', '*', '(', | ||||
|    /* numpad */      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', | ||||
|    /* func keys */   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, | ||||
|    /* misc chars */  27, '~', '_', '+', 8, 9, '{', '}', 13, ':', '"', '|', '|', '<', '>', '?', ' ', | ||||
|    /* controls */    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, | ||||
|    /* numpad */      '/', '*', '-', '+', '.', 13, | ||||
|    /* modifiers */   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| /* ctrl+key mapping table for the US keyboard layout */ | ||||
| static unsigned short standard_key_control_table[KEY_MAX] = | ||||
| { | ||||
|    /* start */       0, | ||||
|    /* alphabet */    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, | ||||
|    /* numbers */     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | ||||
|    /* numpad */      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', | ||||
|    /* func keys */   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, | ||||
|    /* misc chars */  27, 2, 2, 2, 127, 127, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2, 2, | ||||
|    /* controls */    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, | ||||
|    /* numpad */      2, 2, 2, 2, 2, 10, | ||||
|    /* modifiers */   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| /* convert numeric pad scancodes into arrow codes */ | ||||
| static unsigned char numlock_table[10] = | ||||
| { | ||||
|    KEY_INSERT, KEY_END,    KEY_DOWN,   KEY_PGDN,   KEY_LEFT, | ||||
|    KEY_5_PAD,  KEY_RIGHT,  KEY_HOME,   KEY_UP,     KEY_PGUP | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| /* kb_wait_for_write_ready: | ||||
|  *  Wait for the keyboard controller to set the ready-for-write bit. | ||||
|  */ | ||||
| static __inline__ int kb_wait_for_write_ready (void) | ||||
| { | ||||
|  int timeout = 4096; | ||||
|  | ||||
|  while ((timeout>0) && (inportb(0x64)&2)) timeout--; | ||||
|  | ||||
|  return (timeout>0); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /* kb_wait_for_read_ready: | ||||
|  *  Wait for the keyboard controller to set the ready-for-read bit. | ||||
|  */ | ||||
| static __inline__ int kb_wait_for_read_ready (void) | ||||
| { | ||||
|  int timeout = 16384; | ||||
|  | ||||
|  while ((timeout>0) && (!(inportb(0x64)&1))) timeout--; | ||||
|  | ||||
|  return (timeout>0); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /* kb_send_data: | ||||
|  *  Sends a byte to the keyboard controller. Returns 1 if all OK. | ||||
|  */ | ||||
| static __inline__ int kb_send_data (unsigned char data) | ||||
| { | ||||
|  int resends = 4; | ||||
|  int timeout, temp; | ||||
|  | ||||
|  do { | ||||
|      if (!kb_wait_for_write_ready()) | ||||
|         return 0; | ||||
|  | ||||
|      outportb(0x60, data); | ||||
|      timeout = 4096; | ||||
|  | ||||
|      while (--timeout>0) { | ||||
|            if (!kb_wait_for_read_ready()) | ||||
| 	      return 0; | ||||
|  | ||||
|            temp = inportb(0x60); | ||||
|  | ||||
|            if (temp == 0xFA) | ||||
| 	      return 1; | ||||
|  | ||||
|            if (temp == 0xFE) | ||||
| 	      break; | ||||
|      } | ||||
|  } while ((resends-- > 0) && (timeout > 0)); | ||||
|  | ||||
|  return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void update_leds (int leds) | ||||
| { | ||||
|  if (leds_ok) { | ||||
|     if (!in_a_terrupt) | ||||
|        DISABLE(); | ||||
|  | ||||
|     if (!kb_send_data(0xED)) { | ||||
|        kb_send_data(0xF4); | ||||
|        leds_ok = FALSE; | ||||
|     } else if (!kb_send_data((leds>>8)&7)) { | ||||
|        kb_send_data(0xF4); | ||||
|        leds_ok = FALSE; | ||||
|     } | ||||
|  | ||||
|     if (!in_a_terrupt) | ||||
|        ENABLE(); | ||||
|  } | ||||
| } ENDOFUNC(update_leds) | ||||
|  | ||||
|  | ||||
|  | ||||
| static void inject_key (int scancode) | ||||
| { | ||||
|  unsigned short *table; | ||||
|  | ||||
|  if ((scancode >= KEY_0_PAD) && (scancode <= KEY_9_PAD)) { | ||||
|     if (((key_shifts & KB_NUMLOCK_FLAG) != 0) == ((key_shifts & KB_SHIFT_FLAG) != 0)) { | ||||
|        scancode = numlock_table[scancode - KEY_0_PAD]; | ||||
|     } | ||||
|     table = standard_key_ascii_table; | ||||
|  } else if (key_shifts & KB_CTRL_FLAG) { | ||||
|     table = standard_key_control_table; | ||||
|  } else if (key_shifts & KB_SHIFT_FLAG) { | ||||
|     if (key_shifts & KB_CAPSLOCK_FLAG) { | ||||
|        if (standard_key_ascii_table[scancode]==standard_key_capslock_table[scancode]) { | ||||
|           table = standard_key_shift_table; | ||||
|        } else { | ||||
|           table = standard_key_ascii_table; | ||||
|        } | ||||
|     } else { | ||||
|        table = standard_key_shift_table; | ||||
|     } | ||||
|  } else if (key_shifts & KB_CAPSLOCK_FLAG) { | ||||
|     table = standard_key_capslock_table; | ||||
|  } else { | ||||
|     table = standard_key_ascii_table; | ||||
|  } | ||||
|  | ||||
|  key_buffer.key[key_buffer.end++] = (scancode<<16)|table[scancode]; | ||||
|  | ||||
|  if (key_buffer.end>=KEY_BUFFER_SIZE) | ||||
|     key_buffer.end = 0; | ||||
|  if (key_buffer.end==key_buffer.start) { | ||||
|     key_buffer.start++; | ||||
|     if (key_buffer.start>=KEY_BUFFER_SIZE) | ||||
|        key_buffer.start = 0; | ||||
|  } | ||||
| } ENDOFUNC(inject_key) | ||||
|  | ||||
| static void handle_code (int scancode, int keycode) | ||||
| { | ||||
|  in_a_terrupt++; | ||||
|  | ||||
|  if (keycode==0) {              /* pause */ | ||||
|     inject_key(scancode); | ||||
|     pc_key[KEY_PAUSE] ^= TRUE; | ||||
|  } else if (scancode) { | ||||
|     int flag; | ||||
|   | ||||
|     if (scancode>=KEY_MODIFIERS) { | ||||
|        flag = modifier_table[scancode - KEY_MODIFIERS]; | ||||
|     } else { | ||||
|        flag = 0; | ||||
|     } | ||||
|     if ((char)keycode<0) {      /* release */ | ||||
|        pc_key[scancode] = FALSE; | ||||
|        if (flag&KB_MODIFIERS) { | ||||
|           key_shifts &= ~flag; | ||||
|        } | ||||
|     } else {                    /* keypress */ | ||||
|        pc_key[scancode] = TRUE; | ||||
|        if (flag&KB_MODIFIERS) { | ||||
|           key_shifts |= flag; | ||||
|        } | ||||
|        if (flag&KB_LED_FLAGS) { | ||||
|           key_shifts ^= flag; | ||||
|           update_leds(key_shifts); | ||||
|        } | ||||
|        if (scancode<KEY_MODIFIERS) { | ||||
|           inject_key(scancode); | ||||
|        } | ||||
|     } | ||||
|  } | ||||
|  | ||||
|  in_a_terrupt--; | ||||
| } ENDOFUNC(handle_code) | ||||
|  | ||||
| static __inline__ void satisfy (void) | ||||
| { | ||||
|  __asm__("\n\ | ||||
| 		inb	$0x61, %%al	\n\ | ||||
| 		movb	%%al, %%ah	\n\ | ||||
| 		orb	$0x80, %%al	\n\ | ||||
| 		outb	%%al, $0x61	\n\ | ||||
| 		xchgb	%%al, %%ah	\n\ | ||||
| 		outb	%%al, $0x61	\n\ | ||||
| 		movb	$0x20, %%al	\n\ | ||||
| 		outb	%%al, $0x20	\n\ | ||||
|  ":::"%eax"); | ||||
| } | ||||
|  | ||||
| static int keyboard () | ||||
| { | ||||
|  unsigned char temp, scancode; | ||||
|  | ||||
|  temp = inportb(0x60); | ||||
|  | ||||
|  if (temp<=0xe1) { | ||||
|     if (key_pause_loop) { | ||||
|        if (!--key_pause_loop) handle_code(KEY_PAUSE, 0); | ||||
|     } else | ||||
|        switch (temp) { | ||||
|               case 0xe0: | ||||
|                    key_enhanced = TRUE; | ||||
|                    break; | ||||
|               case 0xe1: | ||||
|                    key_pause_loop = 5; | ||||
|                    break; | ||||
|               default: | ||||
|                    if (key_enhanced) { | ||||
|                       key_enhanced = FALSE; | ||||
|                       scancode = hw_to_mycode_ex[temp&0x7f]; | ||||
|                    } else { | ||||
|                       scancode = hw_to_mycode[temp&0x7f]; | ||||
|                    } | ||||
|                    handle_code(scancode, temp); | ||||
|        } | ||||
|  } | ||||
|  | ||||
|  if (((temp==0x4F)||(temp==0x53))&&(key_shifts&KB_CTRL_FLAG)&&(key_shifts&KB_ALT_FLAG)) { | ||||
|     /* Hack alert: | ||||
|        only SIGINT (but not Ctrl-Break) | ||||
|        calls the destructors and will safely clean up | ||||
|     */ | ||||
|     __asm__("\n\ | ||||
| 		movb	$0x79, %%al		\n\ | ||||
| 		call	___djgpp_hw_exception	\n\ | ||||
|     ":::"%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory"); | ||||
|  } | ||||
|  | ||||
|  satisfy(); | ||||
|  return 0; | ||||
| } ENDOFUNC(keyboard) | ||||
|  | ||||
|  | ||||
| int pc_keypressed (void) | ||||
| { | ||||
|  return (key_buffer.start!=key_buffer.end); | ||||
| } | ||||
|  | ||||
| int pc_readkey (void) | ||||
| { | ||||
|  if (keyboard_installed) { | ||||
|     int key; | ||||
|  | ||||
|     do { | ||||
|     } while (key_buffer.start==key_buffer.end); | ||||
|  | ||||
|     DISABLE(); | ||||
|     key = key_buffer.key[key_buffer.start++]; | ||||
|     if (key_buffer.start>=KEY_BUFFER_SIZE) | ||||
|        key_buffer.start = 0; | ||||
|     ENABLE(); | ||||
|  | ||||
|     return key; | ||||
|  } else { | ||||
|     return 0; | ||||
|  } | ||||
| } | ||||
|  | ||||
| int pc_keydown (int code) | ||||
| { | ||||
|  return pc_key[code]; | ||||
| } | ||||
|  | ||||
| void pc_remove_keyb (void) | ||||
| { | ||||
|  if (keyboard_installed) { | ||||
|     int s1, s2, s3; | ||||
|   | ||||
|     keyboard_installed = FALSE; | ||||
|     pc_clexit(pc_remove_keyb); | ||||
|  | ||||
|     DISABLE(); | ||||
|     _farsetsel(__djgpp_dos_sel); | ||||
|     _farnspokew(0x41c, _farnspeekw(0x41a)); | ||||
|  | ||||
|     s1 = _farnspeekb(0x417) & 0x80; | ||||
|     s2 = _farnspeekb(0x418) & 0xFC; | ||||
|     s3 = _farnspeekb(0x496) & 0xF3; | ||||
|  | ||||
|     if (pc_key[KEY_RSHIFT])   { s1 |= 1; } | ||||
|     if (pc_key[KEY_LSHIFT])   { s1 |= 2; } | ||||
|     if (pc_key[KEY_LCONTROL]) { s2 |= 1; s1 |= 4; } | ||||
|     if (pc_key[KEY_ALT])      { s1 |= 8; s2 |= 2; } | ||||
|     if (pc_key[KEY_RCONTROL]) { s1 |= 4; s3 |= 4; } | ||||
|     if (pc_key[KEY_ALTGR])    { s1 |= 8; s3 |= 8; } | ||||
|  | ||||
|     if (key_shifts&KB_SCROLOCK_FLAG) s1 |= 16; | ||||
|     if (key_shifts&KB_NUMLOCK_FLAG)  s1 |= 32; | ||||
|     if (key_shifts&KB_CAPSLOCK_FLAG) s1 |= 64; | ||||
|  | ||||
|     _farnspokeb(0x417, s1); | ||||
|     _farnspokeb(0x418, s2); | ||||
|     _farnspokeb(0x496, s3); | ||||
|     update_leds(key_shifts); | ||||
|  | ||||
|     ENABLE(); | ||||
|     pc_remove_irq(KEYB_IRQ); | ||||
|  } | ||||
| } | ||||
|  | ||||
| int pc_install_keyb (void) | ||||
| { | ||||
|  if (keyboard_installed||pc_install_irq(KEYB_IRQ, keyboard)) { | ||||
|     return -1; | ||||
|  } else { | ||||
|     int s1, s2, s3; | ||||
|  | ||||
|     LOCKDATA(key_buffer); | ||||
|     LOCKDATA(key_enhanced); | ||||
|     LOCKDATA(key_pause_loop); | ||||
|     LOCKDATA(key_shifts); | ||||
|     LOCKDATA(leds_ok); | ||||
|     LOCKDATA(in_a_terrupt); | ||||
|     LOCKDATA(pc_key); | ||||
|     LOCKDATA(modifier_table); | ||||
|     LOCKDATA(hw_to_mycode); | ||||
|     LOCKDATA(hw_to_mycode_ex); | ||||
|     LOCKDATA(standard_key_ascii_table); | ||||
|     LOCKDATA(standard_key_capslock_table); | ||||
|     LOCKDATA(standard_key_shift_table); | ||||
|     LOCKDATA(standard_key_control_table); | ||||
|     LOCKDATA(numlock_table); | ||||
|     LOCKFUNC(update_leds); | ||||
|     LOCKFUNC(inject_key); | ||||
|     LOCKFUNC(handle_code); | ||||
|     LOCKFUNC(keyboard); | ||||
|      | ||||
|     DISABLE(); | ||||
|     _farsetsel(__djgpp_dos_sel); | ||||
|     _farnspokew(0x41c, _farnspeekw(0x41a)); | ||||
|  | ||||
|     key_shifts = 0; | ||||
|     s1 = _farnspeekb(0x417); | ||||
|     s2 = _farnspeekb(0x418); | ||||
|     s3 = _farnspeekb(0x496); | ||||
|  | ||||
|     if (s1&1) { key_shifts |= KB_SHIFT_FLAG; pc_key[KEY_RSHIFT]   = TRUE; } | ||||
|     if (s1&2) { key_shifts |= KB_SHIFT_FLAG; pc_key[KEY_LSHIFT]   = TRUE; } | ||||
|     if (s2&1) { key_shifts |= KB_CTRL_FLAG;  pc_key[KEY_LCONTROL] = TRUE; } | ||||
|     if (s2&2) { key_shifts |= KB_ALT_FLAG;   pc_key[KEY_ALT]      = TRUE; } | ||||
|     if (s3&4) { key_shifts |= KB_CTRL_FLAG;  pc_key[KEY_RCONTROL] = TRUE; } | ||||
|     if (s3&8) { key_shifts |= KB_ALT_FLAG;   pc_key[KEY_ALTGR]    = TRUE; } | ||||
|  | ||||
|     if (s1&16) key_shifts |= KB_SCROLOCK_FLAG; | ||||
|     if (s1&32) key_shifts |= KB_NUMLOCK_FLAG; | ||||
|     if (s1&64) key_shifts |= KB_CAPSLOCK_FLAG; | ||||
|     update_leds(key_shifts); | ||||
|  | ||||
|     key_enhanced = key_pause_loop = 0; | ||||
|     key_buffer.start = key_buffer.end = 0; | ||||
|     ENABLE(); | ||||
|  | ||||
|     pc_atexit(pc_remove_keyb); | ||||
|     keyboard_installed = TRUE; | ||||
|     return 0; | ||||
|  } | ||||
| } | ||||
							
								
								
									
										258
									
								
								src/glut/dos/PC_HW/pc_mouse.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										258
									
								
								src/glut/dos/PC_HW/pc_mouse.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,258 @@ | ||||
| /* | ||||
|  * PC/HW routine collection v1.0 for DOS/DJGPP | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include <dpmi.h> | ||||
|  | ||||
| #include "pc_hw.h" | ||||
|  | ||||
|  | ||||
|  | ||||
| #define MOUSE_STACK_SIZE 16384 | ||||
|  | ||||
| #define CLEAR_MICKEYS() \ | ||||
|         do { \ | ||||
|             __asm__ __volatile__ ("movw $0xb, %%ax; int $0x33":::"%eax", "%ecx", "%edx"); \ | ||||
|             ox = oy = 0; \ | ||||
|         } while (0) | ||||
|  | ||||
| extern void mouse_wrapper (void); | ||||
| extern void mouse_wrapper_end (void); | ||||
|  | ||||
| static MFUNC mouse_func; | ||||
| static void *mouse_stack; | ||||
| static long mouse_callback; | ||||
| static __dpmi_regs mouse_regs; | ||||
|  | ||||
| static volatile int pc_mouse_x, pc_mouse_y, pc_mouse_b; | ||||
|  | ||||
| static int minx = 0; | ||||
| static int maxx = 319; | ||||
| static int miny = 0; | ||||
| static int maxy = 199; | ||||
|  | ||||
| static int sx = 2; | ||||
| static int sy = 2; | ||||
|  | ||||
| static int emulat3 = FALSE; | ||||
|  | ||||
| static int ox, oy; | ||||
|  | ||||
| static void mouse (__dpmi_regs *r) | ||||
| { | ||||
|  int nx = (signed short)r->x.si / sx; | ||||
|  int ny = (signed short)r->x.di / sy; | ||||
|  int dx = nx - ox; | ||||
|  int dy = ny - oy; | ||||
|  ox = nx; | ||||
|  oy = ny; | ||||
|  | ||||
|  pc_mouse_b = r->x.bx; | ||||
|  pc_mouse_x = MID(minx, pc_mouse_x + dx, maxx); | ||||
|  pc_mouse_y = MID(miny, pc_mouse_y + dy, maxy); | ||||
|  | ||||
|  if (emulat3) { | ||||
|     if ((pc_mouse_b&3)==3) { | ||||
|        pc_mouse_b = 4; | ||||
|     } | ||||
|  } | ||||
|  | ||||
|  if (mouse_func) { | ||||
|     mouse_func(pc_mouse_x, pc_mouse_y, pc_mouse_b); | ||||
|  } | ||||
| } ENDOFUNC(mouse) | ||||
|  | ||||
| void pc_remove_mouse (void) | ||||
| { | ||||
|  if (mouse_callback) { | ||||
|     pc_clexit(pc_remove_mouse); | ||||
|     __asm__("\n\ | ||||
| 		movl	%%edx, %%ecx	\n\ | ||||
| 		shrl	$16, %%ecx	\n\ | ||||
| 		movw	$0x0304, %%ax	\n\ | ||||
| 		int	$0x31		\n\ | ||||
| 		movw	$0x000c, %%ax	\n\ | ||||
| 		xorl	%%ecx, %%ecx	\n\ | ||||
| 		int	$0x33		\n\ | ||||
|     "::"d"(mouse_callback):"%eax", "%ecx"); | ||||
|  | ||||
|     mouse_callback = 0; | ||||
|  | ||||
|     free((void *)((unsigned long)mouse_stack-MOUSE_STACK_SIZE)); | ||||
|  } | ||||
| } | ||||
|  | ||||
| int pc_install_mouse (void) | ||||
| { | ||||
|  int buttons; | ||||
|  | ||||
|  /* fail if already call-backed */ | ||||
|  if (mouse_callback) { | ||||
|     return 0; | ||||
|  } | ||||
|  | ||||
|  /* reset mouse and get status */ | ||||
|  __asm__("\n\ | ||||
| 		xorl	%%eax, %%eax	\n\ | ||||
| 		int	$0x33		\n\ | ||||
| 		andl	%%ebx, %%eax	\n\ | ||||
| 		movl	%%eax, %0	\n\ | ||||
|  ":"=g" (buttons)::"%eax", "%ebx"); | ||||
|  if (!buttons) { | ||||
|     return 0; | ||||
|  } | ||||
|  | ||||
|  /* lock wrapper */ | ||||
|  LOCKDATA(mouse_func); | ||||
|  LOCKDATA(mouse_stack); | ||||
|  LOCKDATA(mouse_callback); | ||||
|  LOCKDATA(mouse_regs); | ||||
|  LOCKDATA(pc_mouse_x); | ||||
|  LOCKDATA(pc_mouse_y); | ||||
|  LOCKDATA(pc_mouse_b); | ||||
|  LOCKDATA(minx); | ||||
|  LOCKDATA(maxx); | ||||
|  LOCKDATA(miny); | ||||
|  LOCKDATA(maxy); | ||||
|  LOCKDATA(sx); | ||||
|  LOCKDATA(sy); | ||||
|  LOCKDATA(emulat3); | ||||
|  LOCKDATA(ox); | ||||
|  LOCKDATA(oy); | ||||
|  LOCKFUNC(mouse); | ||||
|  LOCKFUNC(mouse_wrapper); | ||||
|  | ||||
|  /* grab a locked stack */ | ||||
|  if ((mouse_stack=pc_malloc(MOUSE_STACK_SIZE))==NULL) { | ||||
|     return 0; | ||||
|  } | ||||
|  | ||||
|  /* try to hook a call-back */ | ||||
|  __asm__("\n\ | ||||
| 		pushl	%%ds		\n\ | ||||
| 		pushl	%%es		\n\ | ||||
| 		movw	$0x0303, %%ax	\n\ | ||||
| 		pushl	%%ds		\n\ | ||||
| 		pushl	%%cs		\n\ | ||||
| 		popl	%%ds		\n\ | ||||
| 		popl	%%es		\n\ | ||||
| 		int	$0x31		\n\ | ||||
| 		popl	%%es		\n\ | ||||
| 		popl	%%ds		\n\ | ||||
| 		jc	0f		\n\ | ||||
| 		shll	$16, %%ecx	\n\ | ||||
| 		movw	%%dx, %%cx	\n\ | ||||
| 		movl	%%ecx, %0	\n\ | ||||
| 	0:				\n\ | ||||
|  ":"=g"(mouse_callback) | ||||
|   :"S" (mouse_wrapper), "D"(&mouse_regs) | ||||
|   :"%eax", "%ecx", "%edx"); | ||||
|  if (!mouse_callback) { | ||||
|     free(mouse_stack); | ||||
|     return 0; | ||||
|  } | ||||
|  | ||||
|  /* adjust stack */ | ||||
|  mouse_stack = (void *)((unsigned long)mouse_stack + MOUSE_STACK_SIZE); | ||||
|  | ||||
|  /* install the handler */ | ||||
|  mouse_regs.x.ax = 0x000c; | ||||
|  mouse_regs.x.cx = 0x007f; | ||||
|  mouse_regs.x.dx = mouse_callback&0xffff; | ||||
|  mouse_regs.x.es = mouse_callback>>16; | ||||
|  __dpmi_int(0x33, &mouse_regs); | ||||
|  | ||||
|  CLEAR_MICKEYS(); | ||||
|  | ||||
|  emulat3 = buttons<3; | ||||
|  pc_atexit(pc_remove_mouse); | ||||
|  return buttons; | ||||
| } | ||||
|  | ||||
| MFUNC pc_install_mouse_handler (MFUNC handler) | ||||
| { | ||||
|  MFUNC old; | ||||
|  | ||||
|  if (!mouse_callback && !pc_install_mouse()) { | ||||
|     return NULL; | ||||
|  } | ||||
|  | ||||
|  old = mouse_func; | ||||
|  mouse_func = handler; | ||||
|  return old; | ||||
| } | ||||
|  | ||||
| void pc_mouse_area (int x1, int y1, int x2, int y2) | ||||
| { | ||||
|  minx = x1; | ||||
|  maxx = x2; | ||||
|  miny = y1; | ||||
|  maxy = y2; | ||||
| } | ||||
|  | ||||
| void pc_mouse_speed (int xspeed, int yspeed) | ||||
| { | ||||
|  DISABLE(); | ||||
|  | ||||
|  sx = MAX(1, xspeed); | ||||
|  sy = MAX(1, yspeed); | ||||
|  | ||||
|  ENABLE(); | ||||
| } | ||||
|  | ||||
| int pc_query_mouse (int *x, int *y) | ||||
| { | ||||
|  *x = pc_mouse_x; | ||||
|  *y = pc_mouse_y; | ||||
|  return pc_mouse_b; | ||||
| } | ||||
|  | ||||
| void pc_show_mouse (void) | ||||
| { | ||||
|  /* not implemented */ | ||||
| } | ||||
| void pc_scare_mouse (void) | ||||
| { | ||||
|  /* not implemented */ | ||||
| } | ||||
| void pc_unscare_mouse (void) | ||||
| { | ||||
|  /* not implemented */ | ||||
| } | ||||
|  | ||||
| __asm__("\n\ | ||||
| 		.balign	4				\n\ | ||||
| 		.global	_mouse_wrapper			\n\ | ||||
| _mouse_wrapper:						\n\ | ||||
| 		cld					\n\ | ||||
| 		lodsl					\n\ | ||||
| 		movl	%eax, %es:42(%edi)		\n\ | ||||
| 		addw	$4, %es:46(%edi)		\n\ | ||||
| 		pushl	%es				\n\ | ||||
| 		movl	%ss, %ebx			\n\ | ||||
| 		movl	%esp, %esi			\n\ | ||||
| 		movl	%cs:___djgpp_ds_alias, %ss	\n\ | ||||
| 		movl	%cs:_mouse_stack, %esp		\n\ | ||||
| 		pushl	%ss				\n\ | ||||
| 		pushl	%ss				\n\ | ||||
| 		popl	%es				\n\ | ||||
| 		popl	%ds				\n\ | ||||
| 		movl	___djgpp_dos_sel, %fs		\n\ | ||||
| 		pushl	%fs				\n\ | ||||
| 		popl	%gs				\n\ | ||||
| 		pushl	%edi				\n\ | ||||
| 		call	_mouse				\n\ | ||||
| 		popl	%edi				\n\ | ||||
| 		movl	%ebx, %ss			\n\ | ||||
| 		movl	%esi, %esp			\n\ | ||||
| 		popl	%es				\n\ | ||||
| 		iret					\n\ | ||||
| 							\n\ | ||||
| 		.balign	4				\n\ | ||||
| 		.global	_mouse_wrapper_end		\n\ | ||||
| _mouse_wrapper_end:"); | ||||
							
								
								
									
										158
									
								
								src/glut/dos/PC_HW/pc_timer.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								src/glut/dos/PC_HW/pc_timer.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,158 @@ | ||||
| /* | ||||
|  * PC/HW routine collection v1.0 for DOS/DJGPP | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include <pc.h> | ||||
|  | ||||
| #include "pc_hw.h" | ||||
|  | ||||
| #define TIMER_IRQ 0 | ||||
|  | ||||
| #define MAX_TIMERS 8 | ||||
|  | ||||
| #define PIT_FREQ 0x1234DD | ||||
|  | ||||
| #define unvolatile(__v, __t) __extension__ ({union { volatile __t __cp; __t __p; } __q; __q.__cp = __v; __q.__p;}) | ||||
|  | ||||
| static int timer_installed; | ||||
|  | ||||
| typedef struct { | ||||
|         volatile unsigned int counter, clock_ticks, freq; | ||||
|         volatile PFUNC func; | ||||
|         volatile void *parm; | ||||
| } TIMER; | ||||
|  | ||||
| TIMER timer_main, timer_func[MAX_TIMERS]; | ||||
|  | ||||
| static int timer () | ||||
| { | ||||
|  int i; | ||||
|  | ||||
|  for (i=0;i<MAX_TIMERS;i++) { | ||||
|      TIMER *t = &timer_func[i]; | ||||
|      if (t->func) { | ||||
|         t->clock_ticks += t->counter; | ||||
|         if (t->clock_ticks>=timer_main.counter) { | ||||
|            t->clock_ticks -= timer_main.counter; | ||||
|            t->func(unvolatile(t->parm, void *)); | ||||
|         } | ||||
|      } | ||||
|  } | ||||
|  | ||||
|  timer_main.clock_ticks += timer_main.counter; | ||||
|  if (timer_main.clock_ticks>=0x10000) { | ||||
|     timer_main.clock_ticks -= 0x10000; | ||||
|     return 1; | ||||
|  } else { | ||||
|     outportb(0x20, 0x20); | ||||
|     return 0; | ||||
|  } | ||||
| } ENDOFUNC(timer) | ||||
|  | ||||
| void pc_remove_timer (void) | ||||
| { | ||||
|  if (timer_installed) { | ||||
|     timer_installed = FALSE; | ||||
|     pc_clexit(pc_remove_timer); | ||||
|  | ||||
|     DISABLE(); | ||||
|     outportb(0x43, 0x34); | ||||
|     outportb(0x40, 0); | ||||
|     outportb(0x40, 0); | ||||
|     ENABLE(); | ||||
|  | ||||
|     pc_remove_irq(TIMER_IRQ); | ||||
|  } | ||||
| } | ||||
|  | ||||
| static int install_timer (void) | ||||
| { | ||||
|  if (timer_installed||pc_install_irq(TIMER_IRQ, timer)) { | ||||
|     return -1; | ||||
|  } else { | ||||
|     LOCKDATA(timer_func); | ||||
|     LOCKDATA(timer_main); | ||||
|     LOCKFUNC(timer); | ||||
|  | ||||
|     timer_main.counter = 0x10000; | ||||
|  | ||||
|     DISABLE(); | ||||
|     outportb(0x43, 0x34); | ||||
|     outportb(0x40, 0); | ||||
|     outportb(0x40, 0); | ||||
|     timer_main.clock_ticks = 0; | ||||
|     ENABLE(); | ||||
|  | ||||
|     pc_atexit(pc_remove_timer); | ||||
|     timer_installed = TRUE; | ||||
|     return 0; | ||||
|  } | ||||
| } | ||||
|  | ||||
| static TIMER *find_slot (PFUNC func) | ||||
| { | ||||
|  int i; | ||||
|  | ||||
|  for (i=0;i<MAX_TIMERS;i++) { | ||||
|      if (timer_func[i].func==func) { | ||||
|         return &timer_func[i]; | ||||
|      } | ||||
|  } | ||||
|  for (i=0;i<MAX_TIMERS;i++) { | ||||
|      if (!timer_func[i].func) { | ||||
|         return &timer_func[i]; | ||||
|      } | ||||
|  } | ||||
|  | ||||
|  return NULL; | ||||
| } | ||||
|  | ||||
| int pc_install_int (PFUNC func, void *parm, unsigned int freq) | ||||
| { | ||||
|  int i; | ||||
|  TIMER *t; | ||||
|  | ||||
|  if (!timer_installed) { | ||||
|     if (install_timer()) { | ||||
|        return -1; | ||||
|     } | ||||
|  } | ||||
|  | ||||
|  if ((t=find_slot(func))!=NULL) { | ||||
|     unsigned int new_counter = PIT_FREQ / freq; | ||||
|  | ||||
|     DISABLE(); | ||||
|  | ||||
|     t->func = func; | ||||
|     t->parm = parm; | ||||
|     t->freq = freq; | ||||
|     t->clock_ticks = 0; | ||||
|  | ||||
|     if (new_counter < timer_main.counter) { | ||||
|        for (i=0;i<MAX_TIMERS;i++) { | ||||
|            if (timer_func[i].func) { | ||||
|               timer_func[i].counter = new_counter * timer_func[i].freq / freq; | ||||
|            } | ||||
|        } | ||||
|        outportb(0x43, 0x34); | ||||
|        outportb(0x40, (unsigned char)new_counter); | ||||
|        outportb(0x40, (unsigned char)(new_counter>>8)); | ||||
|        timer_main.clock_ticks = 0; | ||||
|        timer_main.counter = new_counter; | ||||
|        timer_main.freq = freq; | ||||
|     } else { | ||||
|        t->counter = PIT_FREQ * freq / (timer_main.freq * timer_main.freq); | ||||
|     } | ||||
|  | ||||
|     ENABLE(); | ||||
|  | ||||
|     return 0; | ||||
|  } | ||||
|   | ||||
|  return -1; | ||||
| } | ||||
							
								
								
									
										152
									
								
								src/glut/dos/callback.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								src/glut/dos/callback.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,152 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.4 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
| #include "internal.h" | ||||
|  | ||||
|  | ||||
| void APIENTRY glutDisplayFunc (void (GLUTCALLBACK *func) (void)) | ||||
| { | ||||
|  display_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutReshapeFunc (void (GLUTCALLBACK *func) (int width, int height)) | ||||
| { | ||||
|  reshape_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutKeyboardFunc (void (GLUTCALLBACK *func) (unsigned char key, int x, int y)) | ||||
| { | ||||
|  keyboard_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutMouseFunc (void (GLUTCALLBACK *func) (int button, int state, int x, int y)) | ||||
| { | ||||
|  mouse_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutMotionFunc (void (GLUTCALLBACK *func) (int x, int y)) | ||||
| { | ||||
|  motion_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutPassiveMotionFunc (void (GLUTCALLBACK *func) (int x, int y)) | ||||
| { | ||||
|  passive_motion_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutEntryFunc (void (GLUTCALLBACK *func) (int state)) | ||||
| { | ||||
|  entry_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutVisibilityFunc (void (GLUTCALLBACK *func) (int state)) | ||||
| { | ||||
|  visibility_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutIdleFunc (void (GLUTCALLBACK *func) (void)) | ||||
| { | ||||
|  idle_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutTimerFunc (unsigned int millis, void (GLUTCALLBACK *func) (int value), int value) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutMenuStateFunc (void (GLUTCALLBACK *func) (int state)) | ||||
| { | ||||
|  menu_state_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSpecialFunc (void (GLUTCALLBACK *func) (int key, int x, int y)) | ||||
| { | ||||
|  special_func = func; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSpaceballMotionFunc (void (GLUTCALLBACK *func) (int x, int y, int z)) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSpaceballRotateFunc (void (GLUTCALLBACK *func) (int x, int y, int z)) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSpaceballButtonFunc (void (GLUTCALLBACK *func) (int button, int state)) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutButtonBoxFunc (void (GLUTCALLBACK *func) (int button, int state)) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutDialsFunc (void (GLUTCALLBACK *func) (int dial, int value)) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutTabletMotionFunc (void (GLUTCALLBACK *func) (int x, int y)) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutTabletButtonFunc (void (GLUTCALLBACK *func) (int button, int state, int x, int y)) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutMenuStatusFunc (void (GLUTCALLBACK *func) (int status, int x, int y)) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutOverlayDisplayFunc (void (GLUTCALLBACK *func) (void)) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutWindowStatusFunc (void (GLUTCALLBACK *func) (int state)) | ||||
| { | ||||
| } | ||||
							
								
								
									
										46
									
								
								src/glut/dos/color.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/glut/dos/color.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.4 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSetColor (int ndx, GLfloat red, GLfloat green, GLfloat blue) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| GLfloat APIENTRY glutGetColor (int ndx, int component) | ||||
| { | ||||
|  return 0.0; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutCopyColormap (int win) | ||||
| { | ||||
| } | ||||
							
								
								
									
										52
									
								
								src/glut/dos/font.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								src/glut/dos/font.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.4 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
|  | ||||
|  | ||||
| void APIENTRY glutBitmapCharacter (void *font, int character) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| int APIENTRY glutBitmapWidth (void *font, int character) | ||||
| { | ||||
|  return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutStrokeCharacter (void *font, int character) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| int APIENTRY glutStrokeWidth (void *font, int character) | ||||
| { | ||||
|  return 0; | ||||
| } | ||||
							
								
								
									
										61
									
								
								src/glut/dos/globals.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								src/glut/dos/globals.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.4 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
| #include "internal.h" | ||||
|  | ||||
| GLenum    g_display_mode = 0; | ||||
| GLuint    g_width        = DEFAULT_WIDTH; | ||||
| GLuint    g_height       = DEFAULT_HEIGHT; | ||||
| GLint     g_mouse        = GL_FALSE; | ||||
| GLboolean g_redisplay    = GL_FALSE; | ||||
| GLint     g_xpos         = 0; | ||||
| GLint     g_ypos         = 0; | ||||
|  | ||||
| void (GLUTCALLBACK *display_func) (void)                              = NULL; | ||||
| void (GLUTCALLBACK *reshape_func) (int width, int height)             = NULL; | ||||
| void (GLUTCALLBACK *keyboard_func) (unsigned char key, int x, int y)  = NULL; | ||||
| void (GLUTCALLBACK *mouse_func) (int button, int state, int x, int y) = NULL; | ||||
| void (GLUTCALLBACK *motion_func) (int x, int y)                       = NULL; | ||||
| void (GLUTCALLBACK *passive_motion_func) (int x, int y)               = NULL; | ||||
| void (GLUTCALLBACK *entry_func) (int state)                           = NULL; | ||||
| void (GLUTCALLBACK *visibility_func) (int state)                      = NULL; | ||||
| void (GLUTCALLBACK *idle_func) (void)                                 = NULL; | ||||
| void (GLUTCALLBACK *menu_state_func) (int state)                      = NULL; | ||||
| void (GLUTCALLBACK *special_func) (int key, int x, int y)             = NULL; | ||||
| void (GLUTCALLBACK *spaceball_motion_func) (int x, int y, int z)      = NULL; | ||||
| void (GLUTCALLBACK *spaceball_rotate_func) (int x, int y, int z)      = NULL; | ||||
| void (GLUTCALLBACK *spaceball_button_func) (int button, int state)    = NULL; | ||||
| void (GLUTCALLBACK *button_box_func) (int button, int state)          = NULL; | ||||
| void (GLUTCALLBACK *dials_func) (int dial, int value)                 = NULL; | ||||
| void (GLUTCALLBACK *tablet_motion_func) (int x, int y)                = NULL; | ||||
| void (GLUTCALLBACK *tabled_button_func) (int button, int state, int x, int y) = NULL; | ||||
| void (GLUTCALLBACK *menu_status_func) (int status, int x, int y)      = NULL; | ||||
| void (GLUTCALLBACK *overlay_display_func) (void)                      = NULL; | ||||
| void (GLUTCALLBACK *window_status_func) (int state)                   = NULL; | ||||
							
								
								
									
										160
									
								
								src/glut/dos/init.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								src/glut/dos/init.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,160 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  4.0 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
| #include "internal.h" | ||||
|  | ||||
|  | ||||
| void APIENTRY glutInit (int *argcp, char **argv) | ||||
| { | ||||
|  glutGet(GLUT_ELAPSED_TIME); | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutInitDisplayMode (unsigned int mode) | ||||
| { | ||||
|  g_display_mode = mode; | ||||
|  | ||||
|  pc_install_keyb(); | ||||
|  g_mouse = pc_install_mouse(); | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutInitWindowPosition (int x, int y) | ||||
| { | ||||
|  g_xpos = x; | ||||
|  g_ypos = y; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutInitWindowSize (int width, int height) | ||||
| { | ||||
|  g_width  = width; | ||||
|  g_height = height; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutMainLoop (void) | ||||
| { | ||||
|  GLboolean idle; | ||||
|  static int old_mouse_x = 0; | ||||
|  static int old_mouse_y = 0; | ||||
|  static int old_mouse_b = 0; | ||||
|  | ||||
|  glutPostRedisplay(); | ||||
|  if (reshape_func) reshape_func(g_width, g_height); | ||||
|  if (visibility_func) visibility_func(GLUT_VISIBLE); | ||||
|  if (g_mouse) pc_show_mouse(); | ||||
|  | ||||
|  while (GL_TRUE) { | ||||
|        idle = GL_TRUE; | ||||
|  | ||||
|        if (g_redisplay && display_func) { | ||||
|           idle        = GL_FALSE; | ||||
|           g_redisplay = GL_FALSE; | ||||
|  | ||||
|           if (g_mouse && !(g_display_mode & GLUT_DOUBLE)) pc_scare_mouse(); | ||||
|           display_func(); | ||||
|           if (g_mouse && !(g_display_mode & GLUT_DOUBLE)) pc_unscare_mouse(); | ||||
|        } | ||||
|  | ||||
|        if (pc_keypressed()) { | ||||
|           int key; | ||||
|  | ||||
|           idle = GL_FALSE; | ||||
|           key  = pc_readkey(); | ||||
|  | ||||
|           switch (key>>16) { | ||||
|                  case KEY_F1:     if (special_func) special_func(GLUT_KEY_F1,        0, 0); break; | ||||
|                  case KEY_F2:     if (special_func) special_func(GLUT_KEY_F2,        0, 0); break; | ||||
|                  case KEY_F3:     if (special_func) special_func(GLUT_KEY_F3,        0, 0); break; | ||||
|                  case KEY_F4:     if (special_func) special_func(GLUT_KEY_F4,        0, 0); break; | ||||
|                  case KEY_F5:     if (special_func) special_func(GLUT_KEY_F5,        0, 0); break; | ||||
|                  case KEY_F6:     if (special_func) special_func(GLUT_KEY_F6,        0, 0); break; | ||||
|                  case KEY_F7:     if (special_func) special_func(GLUT_KEY_F7,        0, 0); break; | ||||
|                  case KEY_F8:     if (special_func) special_func(GLUT_KEY_F8,        0, 0); break; | ||||
|                  case KEY_F9:     if (special_func) special_func(GLUT_KEY_F9,        0, 0); break; | ||||
|                  case KEY_F10:    if (special_func) special_func(GLUT_KEY_F10,       0, 0); break; | ||||
|                  case KEY_F11:    if (special_func) special_func(GLUT_KEY_F11,       0, 0); break; | ||||
|                  case KEY_F12:    if (special_func) special_func(GLUT_KEY_F12,       0, 0); break; | ||||
|                  case KEY_LEFT:   if (special_func) special_func(GLUT_KEY_LEFT,      0, 0); break; | ||||
|                  case KEY_UP:     if (special_func) special_func(GLUT_KEY_UP,        0, 0); break; | ||||
|                  case KEY_RIGHT:  if (special_func) special_func(GLUT_KEY_RIGHT,     0, 0); break; | ||||
|                  case KEY_DOWN:   if (special_func) special_func(GLUT_KEY_DOWN,      0, 0); break; | ||||
|                  case KEY_PGUP:   if (special_func) special_func(GLUT_KEY_PAGE_UP,   0, 0); break; | ||||
|                  case KEY_PGDN:   if (special_func) special_func(GLUT_KEY_PAGE_DOWN, 0, 0); break; | ||||
|                  case KEY_HOME:   if (special_func) special_func(GLUT_KEY_HOME,      0, 0); break; | ||||
|                  case KEY_END:    if (special_func) special_func(GLUT_KEY_END,       0, 0); break; | ||||
|                  case KEY_INSERT: if (special_func) special_func(GLUT_KEY_INSERT,    0, 0); break; | ||||
|                  default:         if (keyboard_func) keyboard_func(key & 0xFF, 0, 0); | ||||
|           } | ||||
|        } | ||||
|  | ||||
|        if (g_mouse) { | ||||
|           int mouse_x; | ||||
|           int mouse_y; | ||||
|           int mouse_b; | ||||
|         | ||||
|           mouse_b = pc_query_mouse(&mouse_x, &mouse_y); | ||||
|            | ||||
|           if (motion_func && ((mouse_x != old_mouse_x) || (mouse_y != old_mouse_y))) { | ||||
|              idle        = GL_FALSE; | ||||
|              old_mouse_x = mouse_x; | ||||
|              old_mouse_y = mouse_y; | ||||
|     | ||||
|              motion_func(old_mouse_x, old_mouse_y); | ||||
|           } | ||||
|     | ||||
|           if (mouse_func && (mouse_b != old_mouse_b)) { | ||||
|              int new_mouse_b = mouse_b; | ||||
|     | ||||
|              if ((old_mouse_b & 1) && !(new_mouse_b & 1)) | ||||
|                 mouse_func(GLUT_LEFT_BUTTON, GLUT_UP,   mouse_x, mouse_y); | ||||
|              else if (!(old_mouse_b & 1) && (new_mouse_b & 1)) | ||||
|                 mouse_func(GLUT_LEFT_BUTTON, GLUT_DOWN, mouse_x, mouse_y); | ||||
|     | ||||
|              if ((old_mouse_b & 2) && !(new_mouse_b & 2)) | ||||
|                 mouse_func(GLUT_RIGHT_BUTTON, GLUT_UP,   mouse_x, mouse_y); | ||||
|              else if (!(old_mouse_b & 2) && (new_mouse_b & 2)) | ||||
|                 mouse_func(GLUT_RIGHT_BUTTON, GLUT_DOWN, mouse_x, mouse_y); | ||||
|     | ||||
|              if ((old_mouse_b & 4) && !(new_mouse_b & 4)) | ||||
|                 mouse_func(GLUT_MIDDLE_BUTTON, GLUT_UP,   mouse_x, mouse_y); | ||||
|              else if (!(old_mouse_b & 3) && (new_mouse_b & 4)) | ||||
|                 mouse_func(GLUT_MIDDLE_BUTTON, GLUT_DOWN, mouse_x, mouse_y); | ||||
|     | ||||
|              idle        = GL_FALSE; | ||||
|              old_mouse_b = new_mouse_b; | ||||
|           } | ||||
|        } | ||||
|  | ||||
|        if (idle && idle_func) | ||||
|           idle_func(); | ||||
|  } | ||||
| } | ||||
							
								
								
									
										78
									
								
								src/glut/dos/internal.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/glut/dos/internal.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  4.0 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|   | ||||
| #ifndef INTERNAL_H_included | ||||
| #define INTERNAL_H_included | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
| #include "pc_hw/pc_hw.h" | ||||
|  | ||||
|  | ||||
| #define MAX_WINDOWS    4 | ||||
|  | ||||
| #define DEFAULT_WIDTH  640 | ||||
| #define DEFAULT_HEIGHT 480 | ||||
| #define DEFAULT_BPP    16 | ||||
|  | ||||
| #define DEPTH_SIZE   16 | ||||
| #define STENCIL_SIZE 8 | ||||
| #define ACCUM_SIZE   16 | ||||
|  | ||||
| extern GLenum    g_display_mode; | ||||
| extern GLuint    g_width; | ||||
| extern GLuint    g_height; | ||||
| extern GLint     g_mouse; | ||||
| extern GLboolean g_redisplay; | ||||
| extern GLint     g_xpos; | ||||
| extern GLint     g_ypos; | ||||
|  | ||||
| extern void (GLUTCALLBACK *display_func) (void); | ||||
| extern void (GLUTCALLBACK *reshape_func) (int width, int height); | ||||
| extern void (GLUTCALLBACK *keyboard_func) (unsigned char key, int x, int y); | ||||
| extern void (GLUTCALLBACK *mouse_func) (int button, int state, int x, int y); | ||||
| extern void (GLUTCALLBACK *motion_func) (int x, int y); | ||||
| extern void (GLUTCALLBACK *passive_motion_func) (int x, int y); | ||||
| extern void (GLUTCALLBACK *entry_func) (int state); | ||||
| extern void (GLUTCALLBACK *visibility_func) (int state); | ||||
| extern void (GLUTCALLBACK *idle_func) (void); | ||||
| extern void (GLUTCALLBACK *menu_state_func) (int state); | ||||
| extern void (GLUTCALLBACK *special_func) (int key, int x, int y); | ||||
| extern void (GLUTCALLBACK *spaceball_motion_func) (int x, int y, int z); | ||||
| extern void (GLUTCALLBACK *spaceball_rotate_func) (int x, int y, int z); | ||||
| extern void (GLUTCALLBACK *spaceball_button_func) (int button, int state); | ||||
| extern void (GLUTCALLBACK *button_box_func) (int button, int state); | ||||
| extern void (GLUTCALLBACK *dials_func) (int dial, int value); | ||||
| extern void (GLUTCALLBACK *tablet_motion_func) (int x, int y); | ||||
| extern void (GLUTCALLBACK *tabled_button_func) (int button, int state, int x, int y); | ||||
| extern void (GLUTCALLBACK *menu_status_func) (int status, int x, int y); | ||||
| extern void (GLUTCALLBACK *overlay_display_func) (void); | ||||
| extern void (GLUTCALLBACK *window_status_func) (int state); | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										86
									
								
								src/glut/dos/menu.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								src/glut/dos/menu.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.4 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
|  | ||||
|  | ||||
| int APIENTRY glutCreateMenu (void (GLUTCALLBACK *func) (int)) | ||||
| { | ||||
|  return 0; | ||||
| } | ||||
|  | ||||
| void APIENTRY glutDestroyMenu (int menu) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| int APIENTRY glutGetMenu (void) | ||||
| { | ||||
|  return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSetMenu (int menu) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutAddMenuEntry (const char *label, int value) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutAddSubMenu (const char *label, int submenu) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutChangeToMenuEntry (int item, const char *label, int value) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutChangeToSubMenu (int item, const char *label, int submenu) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutRemoveMenuItem (int item) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutAttachMenu (int button) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutDetachMenu (int button) | ||||
| { | ||||
| } | ||||
							
								
								
									
										598
									
								
								src/glut/dos/models.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										598
									
								
								src/glut/dos/models.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,598 @@ | ||||
|  | ||||
| /* Copyright (c) Mark J. Kilgard, 1994, 1997. */ | ||||
|  | ||||
| /** | ||||
| (c) Copyright 1993, Silicon Graphics, Inc. | ||||
|  | ||||
| ALL RIGHTS RESERVED | ||||
|  | ||||
| Permission to use, copy, modify, and distribute this software | ||||
| for any purpose and without fee is hereby granted, provided | ||||
| that the above copyright notice appear in all copies and that | ||||
| both the copyright notice and this permission notice appear in | ||||
| supporting documentation, and that the name of Silicon | ||||
| Graphics, Inc. not be used in advertising or publicity | ||||
| pertaining to distribution of the software without specific, | ||||
| written prior permission. | ||||
|  | ||||
| THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU | ||||
| "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR | ||||
| OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF | ||||
| MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  IN NO | ||||
| EVENT SHALL SILICON GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE | ||||
| ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR | ||||
| CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER, | ||||
| INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, | ||||
| SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR | ||||
| NOT SILICON GRAPHICS, INC.  HAS BEEN ADVISED OF THE POSSIBILITY | ||||
| OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
| ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR | ||||
| PERFORMANCE OF THIS SOFTWARE. | ||||
|  | ||||
| US Government Users Restricted Rights | ||||
|  | ||||
| Use, duplication, or disclosure by the Government is subject to | ||||
| restrictions set forth in FAR 52.227.19(c)(2) or subparagraph | ||||
| (c)(1)(ii) of the Rights in Technical Data and Computer | ||||
| Software clause at DFARS 252.227-7013 and/or in similar or | ||||
| successor clauses in the FAR or the DOD or NASA FAR | ||||
| Supplement.  Unpublished-- rights reserved under the copyright | ||||
| laws of the United States.  Contractor/manufacturer is Silicon | ||||
| Graphics, Inc., 2011 N.  Shoreline Blvd., Mountain View, CA | ||||
| 94039-7311. | ||||
|  | ||||
| OpenGL(TM) is a trademark of Silicon Graphics, Inc. | ||||
| */ | ||||
|  | ||||
| #include <math.h> | ||||
| #include <GL/gl.h> | ||||
| #include <GL/glu.h> | ||||
| #include "GL/glut.h" | ||||
|  | ||||
| /* Some <math.h> files do not define M_PI... */ | ||||
| #ifndef M_PI | ||||
| #define M_PI 3.14159265358979323846 | ||||
| #endif | ||||
|  | ||||
| static GLUquadricObj *quadObj; | ||||
|  | ||||
| #define QUAD_OBJ_INIT() { if(!quadObj) initQuadObj(); } | ||||
|  | ||||
| static void | ||||
| initQuadObj(void) | ||||
| { | ||||
|   quadObj = gluNewQuadric(); | ||||
| /*  if (!quadObj) | ||||
|     __glutFatalError("out of memory."); */ | ||||
| } | ||||
|  | ||||
| /* CENTRY */ | ||||
| void APIENTRY | ||||
| glutWireSphere(GLdouble radius, GLint slices, GLint stacks) | ||||
| { | ||||
|   QUAD_OBJ_INIT(); | ||||
|   gluQuadricDrawStyle(quadObj, GLU_LINE); | ||||
|   gluQuadricNormals(quadObj, GLU_SMOOTH); | ||||
|   /* If we ever changed/used the texture or orientation state | ||||
|      of quadObj, we'd need to change it to the defaults here | ||||
|      with gluQuadricTexture and/or gluQuadricOrientation. */ | ||||
|   gluSphere(quadObj, radius, slices, stacks); | ||||
| } | ||||
|  | ||||
| void APIENTRY | ||||
| glutSolidSphere(GLdouble radius, GLint slices, GLint stacks) | ||||
| { | ||||
|   QUAD_OBJ_INIT(); | ||||
|   gluQuadricDrawStyle(quadObj, GLU_FILL); | ||||
|   gluQuadricNormals(quadObj, GLU_SMOOTH); | ||||
|   /* If we ever changed/used the texture or orientation state | ||||
|      of quadObj, we'd need to change it to the defaults here | ||||
|      with gluQuadricTexture and/or gluQuadricOrientation. */ | ||||
|   gluSphere(quadObj, radius, slices, stacks); | ||||
| } | ||||
|  | ||||
| void APIENTRY | ||||
| glutWireCone(GLdouble base, GLdouble height, | ||||
|   GLint slices, GLint stacks) | ||||
| { | ||||
|   QUAD_OBJ_INIT(); | ||||
|   gluQuadricDrawStyle(quadObj, GLU_LINE); | ||||
|   gluQuadricNormals(quadObj, GLU_SMOOTH); | ||||
|   /* If we ever changed/used the texture or orientation state | ||||
|      of quadObj, we'd need to change it to the defaults here | ||||
|      with gluQuadricTexture and/or gluQuadricOrientation. */ | ||||
|   gluCylinder(quadObj, base, 0.0, height, slices, stacks); | ||||
| } | ||||
|  | ||||
| void APIENTRY | ||||
| glutSolidCone(GLdouble base, GLdouble height, | ||||
|   GLint slices, GLint stacks) | ||||
| { | ||||
|   QUAD_OBJ_INIT(); | ||||
|   gluQuadricDrawStyle(quadObj, GLU_FILL); | ||||
|   gluQuadricNormals(quadObj, GLU_SMOOTH); | ||||
|   /* If we ever changed/used the texture or orientation state | ||||
|      of quadObj, we'd need to change it to the defaults here | ||||
|      with gluQuadricTexture and/or gluQuadricOrientation. */ | ||||
|   gluCylinder(quadObj, base, 0.0, height, slices, stacks); | ||||
| } | ||||
|  | ||||
| /* ENDCENTRY */ | ||||
|  | ||||
| static void | ||||
| drawBox(GLfloat size, GLenum type) | ||||
| { | ||||
|   static GLfloat n[6][3] = | ||||
|   { | ||||
|     {-1.0, 0.0, 0.0}, | ||||
|     {0.0, 1.0, 0.0}, | ||||
|     {1.0, 0.0, 0.0}, | ||||
|     {0.0, -1.0, 0.0}, | ||||
|     {0.0, 0.0, 1.0}, | ||||
|     {0.0, 0.0, -1.0} | ||||
|   }; | ||||
|   static GLint faces[6][4] = | ||||
|   { | ||||
|     {0, 1, 2, 3}, | ||||
|     {3, 2, 6, 7}, | ||||
|     {7, 6, 5, 4}, | ||||
|     {4, 5, 1, 0}, | ||||
|     {5, 6, 2, 1}, | ||||
|     {7, 4, 0, 3} | ||||
|   }; | ||||
|   GLfloat v[8][3]; | ||||
|   GLint i; | ||||
|  | ||||
|   v[0][0] = v[1][0] = v[2][0] = v[3][0] = -size / 2; | ||||
|   v[4][0] = v[5][0] = v[6][0] = v[7][0] = size / 2; | ||||
|   v[0][1] = v[1][1] = v[4][1] = v[5][1] = -size / 2; | ||||
|   v[2][1] = v[3][1] = v[6][1] = v[7][1] = size / 2; | ||||
|   v[0][2] = v[3][2] = v[4][2] = v[7][2] = -size / 2; | ||||
|   v[1][2] = v[2][2] = v[5][2] = v[6][2] = size / 2; | ||||
|  | ||||
|   for (i = 5; i >= 0; i--) { | ||||
|     glBegin(type); | ||||
|     glNormal3fv(&n[i][0]); | ||||
|     glVertex3fv(&v[faces[i][0]][0]); | ||||
|     glVertex3fv(&v[faces[i][1]][0]); | ||||
|     glVertex3fv(&v[faces[i][2]][0]); | ||||
|     glVertex3fv(&v[faces[i][3]][0]); | ||||
|     glEnd(); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* CENTRY */ | ||||
| void APIENTRY | ||||
| glutWireCube(GLdouble size) | ||||
| { | ||||
|   drawBox(size, GL_LINE_LOOP); | ||||
| } | ||||
|  | ||||
| void APIENTRY | ||||
| glutSolidCube(GLdouble size) | ||||
| { | ||||
|   drawBox(size, GL_QUADS); | ||||
| } | ||||
|  | ||||
| /* ENDCENTRY */ | ||||
|  | ||||
| static void | ||||
| doughnut(GLfloat r, GLfloat R, GLint nsides, GLint rings) | ||||
| { | ||||
|   int i, j; | ||||
|   GLfloat theta, phi, theta1; | ||||
|   GLfloat cosTheta, sinTheta; | ||||
|   GLfloat cosTheta1, sinTheta1; | ||||
|   GLfloat ringDelta, sideDelta; | ||||
|  | ||||
|   ringDelta = 2.0 * M_PI / rings; | ||||
|   sideDelta = 2.0 * M_PI / nsides; | ||||
|  | ||||
|   theta = 0.0; | ||||
|   cosTheta = 1.0; | ||||
|   sinTheta = 0.0; | ||||
|   for (i = rings - 1; i >= 0; i--) { | ||||
|     theta1 = theta + ringDelta; | ||||
|     cosTheta1 = cos(theta1); | ||||
|     sinTheta1 = sin(theta1); | ||||
|     glBegin(GL_QUAD_STRIP); | ||||
|     phi = 0.0; | ||||
|     for (j = nsides; j >= 0; j--) { | ||||
|       GLfloat cosPhi, sinPhi, dist; | ||||
|  | ||||
|       phi += sideDelta; | ||||
|       cosPhi = cos(phi); | ||||
|       sinPhi = sin(phi); | ||||
|       dist = R + r * cosPhi; | ||||
|  | ||||
|       glNormal3f(cosTheta1 * cosPhi, -sinTheta1 * cosPhi, sinPhi); | ||||
|       glVertex3f(cosTheta1 * dist, -sinTheta1 * dist, r * sinPhi); | ||||
|       glNormal3f(cosTheta * cosPhi, -sinTheta * cosPhi, sinPhi); | ||||
|       glVertex3f(cosTheta * dist, -sinTheta * dist,  r * sinPhi); | ||||
|     } | ||||
|     glEnd(); | ||||
|     theta = theta1; | ||||
|     cosTheta = cosTheta1; | ||||
|     sinTheta = sinTheta1; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* CENTRY */ | ||||
| void APIENTRY | ||||
| glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, | ||||
|   GLint nsides, GLint rings) | ||||
| { | ||||
|   glPushAttrib(GL_POLYGON_BIT); | ||||
|   glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); | ||||
|   doughnut(innerRadius, outerRadius, nsides, rings); | ||||
|   glPopAttrib(); | ||||
| } | ||||
|  | ||||
| void APIENTRY | ||||
| glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, | ||||
|   GLint nsides, GLint rings) | ||||
| { | ||||
|   doughnut(innerRadius, outerRadius, nsides, rings); | ||||
| } | ||||
|  | ||||
| /* ENDCENTRY */ | ||||
|  | ||||
| static GLfloat dodec[20][3]; | ||||
|  | ||||
| static void | ||||
| initDodecahedron(void) | ||||
| { | ||||
|   GLfloat alpha, beta; | ||||
|  | ||||
|   alpha = sqrt(2.0 / (3.0 + sqrt(5.0))); | ||||
|   beta = 1.0 + sqrt(6.0 / (3.0 + sqrt(5.0)) - | ||||
|     2.0 + 2.0 * sqrt(2.0 / (3.0 + sqrt(5.0)))); | ||||
|   /* *INDENT-OFF* */ | ||||
|   dodec[0][0] = -alpha; dodec[0][1] = 0; dodec[0][2] = beta; | ||||
|   dodec[1][0] = alpha; dodec[1][1] = 0; dodec[1][2] = beta; | ||||
|   dodec[2][0] = -1; dodec[2][1] = -1; dodec[2][2] = -1; | ||||
|   dodec[3][0] = -1; dodec[3][1] = -1; dodec[3][2] = 1; | ||||
|   dodec[4][0] = -1; dodec[4][1] = 1; dodec[4][2] = -1; | ||||
|   dodec[5][0] = -1; dodec[5][1] = 1; dodec[5][2] = 1; | ||||
|   dodec[6][0] = 1; dodec[6][1] = -1; dodec[6][2] = -1; | ||||
|   dodec[7][0] = 1; dodec[7][1] = -1; dodec[7][2] = 1; | ||||
|   dodec[8][0] = 1; dodec[8][1] = 1; dodec[8][2] = -1; | ||||
|   dodec[9][0] = 1; dodec[9][1] = 1; dodec[9][2] = 1; | ||||
|   dodec[10][0] = beta; dodec[10][1] = alpha; dodec[10][2] = 0; | ||||
|   dodec[11][0] = beta; dodec[11][1] = -alpha; dodec[11][2] = 0; | ||||
|   dodec[12][0] = -beta; dodec[12][1] = alpha; dodec[12][2] = 0; | ||||
|   dodec[13][0] = -beta; dodec[13][1] = -alpha; dodec[13][2] = 0; | ||||
|   dodec[14][0] = -alpha; dodec[14][1] = 0; dodec[14][2] = -beta; | ||||
|   dodec[15][0] = alpha; dodec[15][1] = 0; dodec[15][2] = -beta; | ||||
|   dodec[16][0] = 0; dodec[16][1] = beta; dodec[16][2] = alpha; | ||||
|   dodec[17][0] = 0; dodec[17][1] = beta; dodec[17][2] = -alpha; | ||||
|   dodec[18][0] = 0; dodec[18][1] = -beta; dodec[18][2] = alpha; | ||||
|   dodec[19][0] = 0; dodec[19][1] = -beta; dodec[19][2] = -alpha; | ||||
|   /* *INDENT-ON* */ | ||||
|  | ||||
| } | ||||
|  | ||||
| #define DIFF3(_a,_b,_c) { \ | ||||
|     (_c)[0] = (_a)[0] - (_b)[0]; \ | ||||
|     (_c)[1] = (_a)[1] - (_b)[1]; \ | ||||
|     (_c)[2] = (_a)[2] - (_b)[2]; \ | ||||
| } | ||||
|  | ||||
| static void | ||||
| crossprod(GLfloat v1[3], GLfloat v2[3], GLfloat prod[3]) | ||||
| { | ||||
|   GLfloat p[3];         /* in case prod == v1 or v2 */ | ||||
|  | ||||
|   p[0] = v1[1] * v2[2] - v2[1] * v1[2]; | ||||
|   p[1] = v1[2] * v2[0] - v2[2] * v1[0]; | ||||
|   p[2] = v1[0] * v2[1] - v2[0] * v1[1]; | ||||
|   prod[0] = p[0]; | ||||
|   prod[1] = p[1]; | ||||
|   prod[2] = p[2]; | ||||
| } | ||||
|  | ||||
| static void | ||||
| normalize(GLfloat v[3]) | ||||
| { | ||||
|   GLfloat d; | ||||
|  | ||||
|   d = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); | ||||
|   if (d == 0.0) { | ||||
| //    __glutWarning("normalize: zero length vector"); | ||||
|     v[0] = d = 1.0; | ||||
|   } | ||||
|   d = 1 / d; | ||||
|   v[0] *= d; | ||||
|   v[1] *= d; | ||||
|   v[2] *= d; | ||||
| } | ||||
|  | ||||
| static void | ||||
| pentagon(int a, int b, int c, int d, int e, GLenum shadeType) | ||||
| { | ||||
|   GLfloat n0[3], d1[3], d2[3]; | ||||
|  | ||||
|   DIFF3(dodec[a], dodec[b], d1); | ||||
|   DIFF3(dodec[b], dodec[c], d2); | ||||
|   crossprod(d1, d2, n0); | ||||
|   normalize(n0); | ||||
|  | ||||
|   glBegin(shadeType); | ||||
|   glNormal3fv(n0); | ||||
|   glVertex3fv(&dodec[a][0]); | ||||
|   glVertex3fv(&dodec[b][0]); | ||||
|   glVertex3fv(&dodec[c][0]); | ||||
|   glVertex3fv(&dodec[d][0]); | ||||
|   glVertex3fv(&dodec[e][0]); | ||||
|   glEnd(); | ||||
| } | ||||
|  | ||||
| static void | ||||
| dodecahedron(GLenum type) | ||||
| { | ||||
|   static int inited = 0; | ||||
|  | ||||
|   if (inited == 0) { | ||||
|     inited = 1; | ||||
|     initDodecahedron(); | ||||
|   } | ||||
|   pentagon(0, 1, 9, 16, 5, type); | ||||
|   pentagon(1, 0, 3, 18, 7, type); | ||||
|   pentagon(1, 7, 11, 10, 9, type); | ||||
|   pentagon(11, 7, 18, 19, 6, type); | ||||
|   pentagon(8, 17, 16, 9, 10, type); | ||||
|   pentagon(2, 14, 15, 6, 19, type); | ||||
|   pentagon(2, 13, 12, 4, 14, type); | ||||
|   pentagon(2, 19, 18, 3, 13, type); | ||||
|   pentagon(3, 0, 5, 12, 13, type); | ||||
|   pentagon(6, 15, 8, 10, 11, type); | ||||
|   pentagon(4, 17, 8, 15, 14, type); | ||||
|   pentagon(4, 12, 5, 16, 17, type); | ||||
| } | ||||
|  | ||||
| /* CENTRY */ | ||||
| void APIENTRY | ||||
| glutWireDodecahedron(void) | ||||
| { | ||||
|   dodecahedron(GL_LINE_LOOP); | ||||
| } | ||||
|  | ||||
| void APIENTRY | ||||
| glutSolidDodecahedron(void) | ||||
| { | ||||
|   dodecahedron(GL_TRIANGLE_FAN); | ||||
| } | ||||
|  | ||||
| /* ENDCENTRY */ | ||||
|  | ||||
| static void | ||||
| recorditem(GLfloat * n1, GLfloat * n2, GLfloat * n3, | ||||
|   GLenum shadeType) | ||||
| { | ||||
|   GLfloat q0[3], q1[3]; | ||||
|  | ||||
|   DIFF3(n1, n2, q0); | ||||
|   DIFF3(n2, n3, q1); | ||||
|   crossprod(q0, q1, q1); | ||||
|   normalize(q1); | ||||
|  | ||||
|   glBegin(shadeType); | ||||
|   glNormal3fv(q1); | ||||
|   glVertex3fv(n1); | ||||
|   glVertex3fv(n2); | ||||
|   glVertex3fv(n3); | ||||
|   glEnd(); | ||||
| } | ||||
|  | ||||
| static void | ||||
| subdivide(GLfloat * v0, GLfloat * v1, GLfloat * v2, | ||||
|   GLenum shadeType) | ||||
| { | ||||
|   int depth; | ||||
|   GLfloat w0[3], w1[3], w2[3]; | ||||
|   GLfloat l; | ||||
|   int i, j, k, n; | ||||
|  | ||||
|   depth = 1; | ||||
|   for (i = 0; i < depth; i++) { | ||||
|     for (j = 0; i + j < depth; j++) { | ||||
|       k = depth - i - j; | ||||
|       for (n = 0; n < 3; n++) { | ||||
|         w0[n] = (i * v0[n] + j * v1[n] + k * v2[n]) / depth; | ||||
|         w1[n] = ((i + 1) * v0[n] + j * v1[n] + (k - 1) * v2[n]) | ||||
|           / depth; | ||||
|         w2[n] = (i * v0[n] + (j + 1) * v1[n] + (k - 1) * v2[n]) | ||||
|           / depth; | ||||
|       } | ||||
|       l = sqrt(w0[0] * w0[0] + w0[1] * w0[1] + w0[2] * w0[2]); | ||||
|       w0[0] /= l; | ||||
|       w0[1] /= l; | ||||
|       w0[2] /= l; | ||||
|       l = sqrt(w1[0] * w1[0] + w1[1] * w1[1] + w1[2] * w1[2]); | ||||
|       w1[0] /= l; | ||||
|       w1[1] /= l; | ||||
|       w1[2] /= l; | ||||
|       l = sqrt(w2[0] * w2[0] + w2[1] * w2[1] + w2[2] * w2[2]); | ||||
|       w2[0] /= l; | ||||
|       w2[1] /= l; | ||||
|       w2[2] /= l; | ||||
|       recorditem(w1, w0, w2, shadeType); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| static void | ||||
| drawtriangle(int i, GLfloat data[][3], int ndx[][3], | ||||
|   GLenum shadeType) | ||||
| { | ||||
|   GLfloat *x0, *x1, *x2; | ||||
|  | ||||
|   x0 = data[ndx[i][0]]; | ||||
|   x1 = data[ndx[i][1]]; | ||||
|   x2 = data[ndx[i][2]]; | ||||
|   subdivide(x0, x1, x2, shadeType); | ||||
| } | ||||
|  | ||||
| /* octahedron data: The octahedron produced is centered at the | ||||
|    origin and has radius 1.0 */ | ||||
| static GLfloat odata[6][3] = | ||||
| { | ||||
|   {1.0, 0.0, 0.0}, | ||||
|   {-1.0, 0.0, 0.0}, | ||||
|   {0.0, 1.0, 0.0}, | ||||
|   {0.0, -1.0, 0.0}, | ||||
|   {0.0, 0.0, 1.0}, | ||||
|   {0.0, 0.0, -1.0} | ||||
| }; | ||||
|  | ||||
| static int ondex[8][3] = | ||||
| { | ||||
|   {0, 4, 2}, | ||||
|   {1, 2, 4}, | ||||
|   {0, 3, 4}, | ||||
|   {1, 4, 3}, | ||||
|   {0, 2, 5}, | ||||
|   {1, 5, 2}, | ||||
|   {0, 5, 3}, | ||||
|   {1, 3, 5} | ||||
| }; | ||||
|  | ||||
| static void | ||||
| octahedron(GLenum shadeType) | ||||
| { | ||||
|   int i; | ||||
|  | ||||
|   for (i = 7; i >= 0; i--) { | ||||
|     drawtriangle(i, odata, ondex, shadeType); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* CENTRY */ | ||||
| void APIENTRY | ||||
| glutWireOctahedron(void) | ||||
| { | ||||
|   octahedron(GL_LINE_LOOP); | ||||
| } | ||||
|  | ||||
| void APIENTRY | ||||
| glutSolidOctahedron(void) | ||||
| { | ||||
|   octahedron(GL_TRIANGLES); | ||||
| } | ||||
|  | ||||
| /* ENDCENTRY */ | ||||
|  | ||||
| /* icosahedron data: These numbers are rigged to make an | ||||
|    icosahedron of radius 1.0 */ | ||||
|  | ||||
| #define X .525731112119133606 | ||||
| #define Z .850650808352039932 | ||||
|  | ||||
| static GLfloat idata[12][3] = | ||||
| { | ||||
|   {-X, 0, Z}, | ||||
|   {X, 0, Z}, | ||||
|   {-X, 0, -Z}, | ||||
|   {X, 0, -Z}, | ||||
|   {0, Z, X}, | ||||
|   {0, Z, -X}, | ||||
|   {0, -Z, X}, | ||||
|   {0, -Z, -X}, | ||||
|   {Z, X, 0}, | ||||
|   {-Z, X, 0}, | ||||
|   {Z, -X, 0}, | ||||
|   {-Z, -X, 0} | ||||
| }; | ||||
|  | ||||
| static int index[20][3] = | ||||
| { | ||||
|   {0, 4, 1}, | ||||
|   {0, 9, 4}, | ||||
|   {9, 5, 4}, | ||||
|   {4, 5, 8}, | ||||
|   {4, 8, 1}, | ||||
|   {8, 10, 1}, | ||||
|   {8, 3, 10}, | ||||
|   {5, 3, 8}, | ||||
|   {5, 2, 3}, | ||||
|   {2, 7, 3}, | ||||
|   {7, 10, 3}, | ||||
|   {7, 6, 10}, | ||||
|   {7, 11, 6}, | ||||
|   {11, 0, 6}, | ||||
|   {0, 1, 6}, | ||||
|   {6, 1, 10}, | ||||
|   {9, 0, 11}, | ||||
|   {9, 11, 2}, | ||||
|   {9, 2, 5}, | ||||
|   {7, 2, 11}, | ||||
| }; | ||||
|  | ||||
| static void | ||||
| icosahedron(GLenum shadeType) | ||||
| { | ||||
|   int i; | ||||
|  | ||||
|   for (i = 19; i >= 0; i--) { | ||||
|     drawtriangle(i, idata, index, shadeType); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* CENTRY */ | ||||
| void APIENTRY | ||||
| glutWireIcosahedron(void) | ||||
| { | ||||
|   icosahedron(GL_LINE_LOOP); | ||||
| } | ||||
|  | ||||
| void APIENTRY | ||||
| glutSolidIcosahedron(void) | ||||
| { | ||||
|   icosahedron(GL_TRIANGLES); | ||||
| } | ||||
|  | ||||
| /* ENDCENTRY */ | ||||
|  | ||||
| /* tetrahedron data: */ | ||||
|  | ||||
| #define T       1.73205080756887729 | ||||
|  | ||||
| static GLfloat tdata[4][3] = | ||||
| { | ||||
|   {T, T, T}, | ||||
|   {T, -T, -T}, | ||||
|   {-T, T, -T}, | ||||
|   {-T, -T, T} | ||||
| }; | ||||
|  | ||||
| static int tndex[4][3] = | ||||
| { | ||||
|   {0, 1, 3}, | ||||
|   {2, 1, 0}, | ||||
|   {3, 2, 0}, | ||||
|   {1, 2, 3} | ||||
| }; | ||||
|  | ||||
| static void | ||||
| tetrahedron(GLenum shadeType) | ||||
| { | ||||
|   int i; | ||||
|  | ||||
|   for (i = 3; i >= 0; i--) | ||||
|     drawtriangle(i, tdata, tndex, shadeType); | ||||
| } | ||||
|  | ||||
| /* CENTRY */ | ||||
| void APIENTRY | ||||
| glutWireTetrahedron(void) | ||||
| { | ||||
|   tetrahedron(GL_LINE_LOOP); | ||||
| } | ||||
|  | ||||
| void APIENTRY | ||||
| glutSolidTetrahedron(void) | ||||
| { | ||||
|   tetrahedron(GL_TRIANGLES); | ||||
| } | ||||
|  | ||||
| /* ENDCENTRY */ | ||||
							
								
								
									
										60
									
								
								src/glut/dos/overlay.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								src/glut/dos/overlay.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.4 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
|  | ||||
|  | ||||
| void APIENTRY glutEstablishOverlay (void) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutRemoveOverlay (void) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutUseLayer (GLenum layer) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutPostOverlayRedisplay (void) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutShowOverlay (void) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutHideOverlay (void) | ||||
| { | ||||
| } | ||||
							
								
								
									
										70
									
								
								src/glut/dos/state.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/glut/dos/state.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.4 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
| #include "internal.h" | ||||
|  | ||||
|  | ||||
| #define FREQUENCY 100 | ||||
|  | ||||
|  | ||||
| static int timer_installed; | ||||
| static volatile int ticks; | ||||
|  | ||||
| static void ticks_timer (void *p) | ||||
| { | ||||
|  (void)p; | ||||
|  ticks++; | ||||
| } ENDOFUNC(ticks_timer) | ||||
|  | ||||
|  | ||||
|  | ||||
| int APIENTRY glutGet (GLenum type) | ||||
| { | ||||
|  switch (type) { | ||||
|         case GLUT_WINDOW_RGBA: | ||||
|              return 1; | ||||
|         case GLUT_ELAPSED_TIME: | ||||
|              if (!timer_installed) { | ||||
|                 timer_installed = !timer_installed; | ||||
|                 LOCKDATA(ticks); | ||||
|                 LOCKFUNC(ticks_timer); | ||||
|                 pc_install_int(ticks_timer, NULL, FREQUENCY); | ||||
|              } | ||||
|              return ticks*1000/FREQUENCY; | ||||
|         default: | ||||
|              return 0; | ||||
|  } | ||||
| } | ||||
|  | ||||
|  | ||||
| int APIENTRY glutDeviceGet (GLenum type) | ||||
| { | ||||
|  return 0; | ||||
| } | ||||
							
								
								
									
										212
									
								
								src/glut/dos/teapot.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								src/glut/dos/teapot.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,212 @@ | ||||
|  | ||||
| /* Copyright (c) Mark J. Kilgard, 1994. */ | ||||
|  | ||||
| /** | ||||
| (c) Copyright 1993, Silicon Graphics, Inc. | ||||
|  | ||||
| ALL RIGHTS RESERVED | ||||
|  | ||||
| Permission to use, copy, modify, and distribute this software | ||||
| for any purpose and without fee is hereby granted, provided | ||||
| that the above copyright notice appear in all copies and that | ||||
| both the copyright notice and this permission notice appear in | ||||
| supporting documentation, and that the name of Silicon | ||||
| Graphics, Inc. not be used in advertising or publicity | ||||
| pertaining to distribution of the software without specific, | ||||
| written prior permission. | ||||
|  | ||||
| THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU | ||||
| "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR | ||||
| OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF | ||||
| MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  IN NO | ||||
| EVENT SHALL SILICON GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE | ||||
| ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR | ||||
| CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER, | ||||
| INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, | ||||
| SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR | ||||
| NOT SILICON GRAPHICS, INC.  HAS BEEN ADVISED OF THE POSSIBILITY | ||||
| OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
| ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR | ||||
| PERFORMANCE OF THIS SOFTWARE. | ||||
|  | ||||
| US Government Users Restricted Rights | ||||
|  | ||||
| Use, duplication, or disclosure by the Government is subject to | ||||
| restrictions set forth in FAR 52.227.19(c)(2) or subparagraph | ||||
| (c)(1)(ii) of the Rights in Technical Data and Computer | ||||
| Software clause at DFARS 252.227-7013 and/or in similar or | ||||
| successor clauses in the FAR or the DOD or NASA FAR | ||||
| Supplement.  Unpublished-- rights reserved under the copyright | ||||
| laws of the United States.  Contractor/manufacturer is Silicon | ||||
| Graphics, Inc., 2011 N.  Shoreline Blvd., Mountain View, CA | ||||
| 94039-7311. | ||||
|  | ||||
| OpenGL(TM) is a trademark of Silicon Graphics, Inc. | ||||
| */ | ||||
|  | ||||
| #include <GL/gl.h> | ||||
| #include <GL/glu.h> | ||||
| #include "GL/glut.h" | ||||
|  | ||||
| /* Rim, body, lid, and bottom data must be reflected in x and | ||||
|    y; handle and spout data across the y axis only.  */ | ||||
|  | ||||
| static int patchdata[][16] = | ||||
| { | ||||
|     /* rim */ | ||||
|   {102, 103, 104, 105, 4, 5, 6, 7, 8, 9, 10, 11, | ||||
|     12, 13, 14, 15}, | ||||
|     /* body */ | ||||
|   {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, | ||||
|     24, 25, 26, 27}, | ||||
|   {24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, | ||||
|     37, 38, 39, 40}, | ||||
|     /* lid */ | ||||
|   {96, 96, 96, 96, 97, 98, 99, 100, 101, 101, 101, | ||||
|     101, 0, 1, 2, 3,}, | ||||
|   {0, 1, 2, 3, 106, 107, 108, 109, 110, 111, 112, | ||||
|     113, 114, 115, 116, 117}, | ||||
|     /* bottom */ | ||||
|   {118, 118, 118, 118, 124, 122, 119, 121, 123, 126, | ||||
|     125, 120, 40, 39, 38, 37}, | ||||
|     /* handle */ | ||||
|   {41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, | ||||
|     53, 54, 55, 56}, | ||||
|   {53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, | ||||
|     28, 65, 66, 67}, | ||||
|     /* spout */ | ||||
|   {68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, | ||||
|     80, 81, 82, 83}, | ||||
|   {80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, | ||||
|     92, 93, 94, 95} | ||||
| }; | ||||
| /* *INDENT-OFF* */ | ||||
|  | ||||
| static float cpdata[][3] = | ||||
| { | ||||
|     {0.2, 0, 2.7}, {0.2, -0.112, 2.7}, {0.112, -0.2, 2.7}, {0, | ||||
|     -0.2, 2.7}, {1.3375, 0, 2.53125}, {1.3375, -0.749, 2.53125}, | ||||
|     {0.749, -1.3375, 2.53125}, {0, -1.3375, 2.53125}, {1.4375, | ||||
|     0, 2.53125}, {1.4375, -0.805, 2.53125}, {0.805, -1.4375, | ||||
|     2.53125}, {0, -1.4375, 2.53125}, {1.5, 0, 2.4}, {1.5, -0.84, | ||||
|     2.4}, {0.84, -1.5, 2.4}, {0, -1.5, 2.4}, {1.75, 0, 1.875}, | ||||
|     {1.75, -0.98, 1.875}, {0.98, -1.75, 1.875}, {0, -1.75, | ||||
|     1.875}, {2, 0, 1.35}, {2, -1.12, 1.35}, {1.12, -2, 1.35}, | ||||
|     {0, -2, 1.35}, {2, 0, 0.9}, {2, -1.12, 0.9}, {1.12, -2, | ||||
|     0.9}, {0, -2, 0.9}, {-2, 0, 0.9}, {2, 0, 0.45}, {2, -1.12, | ||||
|     0.45}, {1.12, -2, 0.45}, {0, -2, 0.45}, {1.5, 0, 0.225}, | ||||
|     {1.5, -0.84, 0.225}, {0.84, -1.5, 0.225}, {0, -1.5, 0.225}, | ||||
|     {1.5, 0, 0.15}, {1.5, -0.84, 0.15}, {0.84, -1.5, 0.15}, {0, | ||||
|     -1.5, 0.15}, {-1.6, 0, 2.025}, {-1.6, -0.3, 2.025}, {-1.5, | ||||
|     -0.3, 2.25}, {-1.5, 0, 2.25}, {-2.3, 0, 2.025}, {-2.3, -0.3, | ||||
|     2.025}, {-2.5, -0.3, 2.25}, {-2.5, 0, 2.25}, {-2.7, 0, | ||||
|     2.025}, {-2.7, -0.3, 2.025}, {-3, -0.3, 2.25}, {-3, 0, | ||||
|     2.25}, {-2.7, 0, 1.8}, {-2.7, -0.3, 1.8}, {-3, -0.3, 1.8}, | ||||
|     {-3, 0, 1.8}, {-2.7, 0, 1.575}, {-2.7, -0.3, 1.575}, {-3, | ||||
|     -0.3, 1.35}, {-3, 0, 1.35}, {-2.5, 0, 1.125}, {-2.5, -0.3, | ||||
|     1.125}, {-2.65, -0.3, 0.9375}, {-2.65, 0, 0.9375}, {-2, | ||||
|     -0.3, 0.9}, {-1.9, -0.3, 0.6}, {-1.9, 0, 0.6}, {1.7, 0, | ||||
|     1.425}, {1.7, -0.66, 1.425}, {1.7, -0.66, 0.6}, {1.7, 0, | ||||
|     0.6}, {2.6, 0, 1.425}, {2.6, -0.66, 1.425}, {3.1, -0.66, | ||||
|     0.825}, {3.1, 0, 0.825}, {2.3, 0, 2.1}, {2.3, -0.25, 2.1}, | ||||
|     {2.4, -0.25, 2.025}, {2.4, 0, 2.025}, {2.7, 0, 2.4}, {2.7, | ||||
|     -0.25, 2.4}, {3.3, -0.25, 2.4}, {3.3, 0, 2.4}, {2.8, 0, | ||||
|     2.475}, {2.8, -0.25, 2.475}, {3.525, -0.25, 2.49375}, | ||||
|     {3.525, 0, 2.49375}, {2.9, 0, 2.475}, {2.9, -0.15, 2.475}, | ||||
|     {3.45, -0.15, 2.5125}, {3.45, 0, 2.5125}, {2.8, 0, 2.4}, | ||||
|     {2.8, -0.15, 2.4}, {3.2, -0.15, 2.4}, {3.2, 0, 2.4}, {0, 0, | ||||
|     3.15}, {0.8, 0, 3.15}, {0.8, -0.45, 3.15}, {0.45, -0.8, | ||||
|     3.15}, {0, -0.8, 3.15}, {0, 0, 2.85}, {1.4, 0, 2.4}, {1.4, | ||||
|     -0.784, 2.4}, {0.784, -1.4, 2.4}, {0, -1.4, 2.4}, {0.4, 0, | ||||
|     2.55}, {0.4, -0.224, 2.55}, {0.224, -0.4, 2.55}, {0, -0.4, | ||||
|     2.55}, {1.3, 0, 2.55}, {1.3, -0.728, 2.55}, {0.728, -1.3, | ||||
|     2.55}, {0, -1.3, 2.55}, {1.3, 0, 2.4}, {1.3, -0.728, 2.4}, | ||||
|     {0.728, -1.3, 2.4}, {0, -1.3, 2.4}, {0, 0, 0}, {1.425, | ||||
|     -0.798, 0}, {1.5, 0, 0.075}, {1.425, 0, 0}, {0.798, -1.425, | ||||
|     0}, {0, -1.5, 0.075}, {0, -1.425, 0}, {1.5, -0.84, 0.075}, | ||||
|     {0.84, -1.5, 0.075} | ||||
| }; | ||||
|  | ||||
| static float tex[2][2][2] = | ||||
| { | ||||
|   { {0, 0}, | ||||
|     {1, 0}}, | ||||
|   { {0, 1}, | ||||
|     {1, 1}} | ||||
| }; | ||||
|  | ||||
| /* *INDENT-ON* */ | ||||
|  | ||||
| static void | ||||
| teapot(GLint grid, GLdouble scale, GLenum type) | ||||
| { | ||||
|   float p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3]; | ||||
|   long i, j, k, l; | ||||
|  | ||||
|   glPushAttrib(GL_ENABLE_BIT | GL_EVAL_BIT); | ||||
|   glEnable(GL_AUTO_NORMAL); | ||||
|   glEnable(GL_NORMALIZE); | ||||
|   glEnable(GL_MAP2_VERTEX_3); | ||||
|   glEnable(GL_MAP2_TEXTURE_COORD_2); | ||||
|   glPushMatrix(); | ||||
|   glRotatef(270.0, 1.0, 0.0, 0.0); | ||||
|   glScalef(0.5 * scale, 0.5 * scale, 0.5 * scale); | ||||
|   glTranslatef(0.0, 0.0, -1.5); | ||||
|   for (i = 0; i < 10; i++) { | ||||
|     for (j = 0; j < 4; j++) { | ||||
|       for (k = 0; k < 4; k++) { | ||||
|         for (l = 0; l < 3; l++) { | ||||
|           p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; | ||||
|           q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l]; | ||||
|           if (l == 1) | ||||
|             q[j][k][l] *= -1.0; | ||||
|           if (i < 6) { | ||||
|             r[j][k][l] = | ||||
|               cpdata[patchdata[i][j * 4 + (3 - k)]][l]; | ||||
|             if (l == 0) | ||||
|               r[j][k][l] *= -1.0; | ||||
|             s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; | ||||
|             if (l == 0) | ||||
|               s[j][k][l] *= -1.0; | ||||
|             if (l == 1) | ||||
|               s[j][k][l] *= -1.0; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2, | ||||
|       &tex[0][0][0]); | ||||
|     glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, | ||||
|       &p[0][0][0]); | ||||
|     glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0); | ||||
|     glEvalMesh2(type, 0, grid, 0, grid); | ||||
|     glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, | ||||
|       &q[0][0][0]); | ||||
|     glEvalMesh2(type, 0, grid, 0, grid); | ||||
|     if (i < 6) { | ||||
|       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, | ||||
|         &r[0][0][0]); | ||||
|       glEvalMesh2(type, 0, grid, 0, grid); | ||||
|       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, | ||||
|         &s[0][0][0]); | ||||
|       glEvalMesh2(type, 0, grid, 0, grid); | ||||
|     } | ||||
|   } | ||||
|   glPopMatrix(); | ||||
|   glPopAttrib(); | ||||
| } | ||||
|  | ||||
| /* CENTRY */ | ||||
| void APIENTRY  | ||||
| glutSolidTeapot(GLdouble scale) | ||||
| { | ||||
|   teapot(7, scale, GL_FILL); | ||||
| } | ||||
|  | ||||
| void APIENTRY  | ||||
| glutWireTeapot(GLdouble scale) | ||||
| { | ||||
|   teapot(10, scale, GL_LINE); | ||||
| } | ||||
|  | ||||
| /* ENDCENTRY */ | ||||
							
								
								
									
										217
									
								
								src/glut/dos/window.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								src/glut/dos/window.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,217 @@ | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  4.0 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * DOS/DJGPP glut driver v1.0 for Mesa 4.0 | ||||
|  * | ||||
|  *  Copyright (C) 2002 - Borca Daniel | ||||
|  *  Email : dborca@yahoo.com | ||||
|  *  Web   : http://www.geocities.com/dborca | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "GL/glut.h" | ||||
| #include "GL/dmesa.h" | ||||
| #include "internal.h" | ||||
|  | ||||
|  | ||||
|  | ||||
| static int window; | ||||
|  | ||||
| static DMesaVisual  visual  = NULL; | ||||
| static DMesaContext context = NULL; | ||||
| static DMesaBuffer  buffer[MAX_WINDOWS]; | ||||
|  | ||||
|  | ||||
|  | ||||
| static void clean (void) | ||||
| { | ||||
|  int i; | ||||
|  | ||||
|  for (i=0; i<MAX_WINDOWS; i++) { | ||||
|      glutDestroyWindow(i+1); | ||||
|  } | ||||
|  if (context) DMesaDestroyContext(context); | ||||
|  if (visual)  DMesaDestroyVisual(visual); | ||||
|  | ||||
|  pc_close_stdout(); | ||||
|  pc_close_stderr(); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| int APIENTRY glutCreateWindow (const char *title) | ||||
| { | ||||
|  int i; | ||||
|  | ||||
|  if (!visual) { | ||||
|     int screen_w = DEFAULT_WIDTH; | ||||
|     int screen_h = DEFAULT_HEIGHT; | ||||
|  | ||||
|     if ((g_width<=640) && (g_height<=480)) { | ||||
|        screen_w = 640; | ||||
|        screen_h = 480; | ||||
|     } else if ((g_width<=800) && (g_height<=600)) { | ||||
|        screen_w = 800; | ||||
|        screen_h = 600; | ||||
|     } else if ((g_width<=1024) && (g_height<=768)) { | ||||
|        screen_w = 1024; | ||||
|        screen_h = 768; | ||||
|     } | ||||
|  | ||||
|     if ((visual=DMesaCreateVisual(screen_w, screen_h, DEFAULT_BPP, | ||||
|                                   g_display_mode & GLUT_DOUBLE, | ||||
|                                   g_display_mode & GLUT_DEPTH  ?DEPTH_SIZE  :0, | ||||
|                                   g_display_mode & GLUT_STENCIL?STENCIL_SIZE:0, | ||||
|                                   g_display_mode & GLUT_ACCUM  ?ACCUM_SIZE  :0))==NULL) { | ||||
|        return 0; | ||||
|     } | ||||
|     | ||||
|     if ((context=DMesaCreateContext(visual, NULL))==NULL) { | ||||
|        DMesaDestroyVisual(visual); | ||||
|        return 0; | ||||
|     } | ||||
|      | ||||
|     pc_open_stdout(); | ||||
|     pc_open_stderr(); | ||||
|     pc_atexit(clean); | ||||
|  } | ||||
|  | ||||
|  for (i=0; i<MAX_WINDOWS; i++) { | ||||
|      if (!buffer[i]) { | ||||
|         DMesaBuffer b; | ||||
|       | ||||
|         if ((b=DMesaCreateBuffer(visual, g_xpos, g_ypos, g_width, g_height))==NULL) { | ||||
|            return 0; | ||||
|         } | ||||
|         if (!DMesaMakeCurrent(context, b)) { | ||||
|            DMesaDestroyBuffer(b); | ||||
|            return 0; | ||||
|         } | ||||
|         if (g_mouse) { | ||||
|            pc_mouse_area(g_xpos, g_ypos, g_xpos + g_width - 1, g_ypos + g_height - 1); | ||||
|         } | ||||
|  | ||||
|         buffer[window = i] = b; | ||||
|         return i+1; | ||||
|      } | ||||
|  } | ||||
|  | ||||
|  return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
| int APIENTRY glutCreateSubWindow (int win, int x, int y, int width, int height) | ||||
| { | ||||
|  return GL_FALSE; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutDestroyWindow (int win) | ||||
| { | ||||
|  if (buffer[win-1]) { | ||||
|     DMesaDestroyBuffer(buffer[win-1]); | ||||
|     buffer[win-1] = NULL; | ||||
|  } | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutPostRedisplay (void) | ||||
| { | ||||
|  g_redisplay = GL_TRUE; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSwapBuffers (void) | ||||
| { | ||||
|  if (g_mouse) pc_scare_mouse(); | ||||
|  DMesaSwapBuffers(buffer[window]); | ||||
|  if (g_mouse) pc_unscare_mouse(); | ||||
| } | ||||
|  | ||||
|  | ||||
| int APIENTRY glutGetWindow (void) | ||||
| { | ||||
|  return window + 1; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSetWindow (int win) | ||||
| { | ||||
|  window = win - 1; | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSetWindowTitle (const char *title) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutSetIconTitle (const char *title) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutPositionWindow (int x, int y) | ||||
| { | ||||
|  if (DMesaViewport(buffer[window], x, y, g_width, g_height)) { | ||||
|     g_xpos = x; | ||||
|     g_ypos = y; | ||||
|  } | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutReshapeWindow (int width, int height) | ||||
| { | ||||
|  if (DMesaViewport(buffer[window], g_xpos, g_ypos, width, height)) { | ||||
|     g_width = width; | ||||
|     g_height = height; | ||||
|     if (reshape_func) { | ||||
|        reshape_func(width, height); | ||||
|     } else { | ||||
|        glViewport(0, 0, width, height); | ||||
|     } | ||||
|  } | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutPopWindow (void) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutPushWindow (void) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutIconifyWindow (void) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutShowWindow (void) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| void APIENTRY glutHideWindow (void) | ||||
| { | ||||
| } | ||||
| @@ -238,11 +238,6 @@ int glutCreateWindow(const char *title) | ||||
| 	 | ||||
| 	gt = (rgb) ? __glut_gt_rgb : __glut_gt_index; | ||||
| 	 | ||||
| 	__glut_ctx = GGIMesaCreateContext(); | ||||
| 	 | ||||
| 	if (__glut_ctx == NULL)  | ||||
| 	  ggiPanic("Can't create mesa-context\n"); | ||||
|  | ||||
| 	__glut_vis = ggiOpen(NULL); | ||||
| 	if (__glut_vis == NULL)  | ||||
| 	{ | ||||
| @@ -261,20 +256,27 @@ int glutCreateWindow(const char *title) | ||||
| 	  /* return GL_FALSE; */ | ||||
| 	} | ||||
| 	 | ||||
| 	ggiGetMode(__glut_vis, &mode); | ||||
|  | ||||
| 	if (GGIMesaSetVisual(__glut_ctx, __glut_vis, rgb, frames > 1) < 0)  | ||||
| 	if (ggiMesaExtendVisual(__glut_vis, GL_FALSE, GL_FALSE,  | ||||
| 	                        16, 0, 0, 0, 0, 0, 1) < 0)  | ||||
| 	{ | ||||
| 		ggiPanic("GGIMesaSetVisual failed!\n"); | ||||
| 	} | ||||
| 	 | ||||
| 	__glut_ctx = ggiMesaCreateContext(__glut_vis); | ||||
| 	 | ||||
| 	if (__glut_ctx == NULL)  | ||||
| 	  ggiPanic("Can't create mesa-context\n"); | ||||
|  | ||||
| 	ggiGetMode(__glut_vis, &mode); | ||||
|  | ||||
| 	 | ||||
| 	__glut_width = mode.visible.x; | ||||
| 	__glut_height = mode.visible.y; | ||||
| 	 | ||||
| 	mousex = mode.visible.x / 2; | ||||
| 	mousey = mode.visible.y / 2; | ||||
| 	 | ||||
| 	GGIMesaMakeCurrent(__glut_ctx); | ||||
| 	ggiMesaMakeCurrent(__glut_ctx, __glut_vis); | ||||
| 	 | ||||
| 	if (__glut_reshape)  | ||||
| 	  __glut_reshape(__glut_width, __glut_height); | ||||
|   | ||||
| @@ -25,8 +25,8 @@ OBJS   = $(SRCS:.c=.obj) | ||||
| MS_LIBS   = ../lib/$(MESALIB) ../lib/$(GLULIB) winmm.lib $(guilibsdll) | ||||
| SGI_LIBS   = $(SGI_OPENGL) $(SGI_GLU) winmm.lib $(guilibsdll) | ||||
|  | ||||
| glut32.dll : $(OBJS) glut.def | ||||
| 	$(link) $(LFLAGS) -out:glut32.dll -def:glut.def $(OBJS) $(MS_LIBS) | ||||
| MesaGlut.dll : $(OBJS) glut.def | ||||
| 	$(link) $(LFLAGS) -out:MesaGlut.dll -def:glut.def $(OBJS) $(MS_LIBS) | ||||
| 	@echo "copying GLUT dynamic link library to lib directory..." | ||||
| 	-copy $(GLUTDLL) ..\lib | ||||
| 	@echo "copying GLUT import library to lib directory..." | ||||
|   | ||||
| @@ -439,15 +439,15 @@ loadVisuals(int *nitems_return) | ||||
|         GLXFBConfigSGIX fbc; | ||||
|         int fbconfigID, drawType, renderType; | ||||
|  | ||||
|         fbc = glXGetFBConfigFromVisualSGIX(__glutDisplay, vlist[i]); | ||||
|         fbc = __glut_glXGetFBConfigFromVisualSGIX(__glutDisplay, vlist[i]); | ||||
|         if (fbc) { | ||||
|           rc = glXGetFBConfigAttribSGIX(__glutDisplay, fbc, | ||||
|           rc = __glut_glXGetFBConfigAttribSGIX(__glutDisplay, fbc, | ||||
| 	    GLX_FBCONFIG_ID_SGIX, &fbconfigID); | ||||
|           if ((rc == 0) && (fbconfigID != None)) { | ||||
|             rc = glXGetFBConfigAttribSGIX(__glutDisplay, fbc, | ||||
|             rc = __glut_glXGetFBConfigAttribSGIX(__glutDisplay, fbc, | ||||
| 	      GLX_DRAWABLE_TYPE_SGIX, &drawType); | ||||
|             if ((rc == 0) && (drawType & GLX_WINDOW_BIT_SGIX)) { | ||||
|               rc = glXGetFBConfigAttribSGIX(__glutDisplay, fbc, | ||||
|               rc = __glut_glXGetFBConfigAttribSGIX(__glutDisplay, fbc, | ||||
| 	        GLX_RENDER_TYPE_SGIX, &renderType); | ||||
|               if ((rc == 0) && (renderType & GLX_RGBA_BIT_SGIX)) { | ||||
|                 mode->fbc = fbc; | ||||
| @@ -459,7 +459,7 @@ loadVisuals(int *nitems_return) | ||||
|  | ||||
|                 /* Start with "j = 1" to skip the GLX_RGBA attribute. */ | ||||
|                 for (j = 1; j < NUM_GLXCAPS; j++) { | ||||
|                   rc = glXGetFBConfigAttribSGIX(__glutDisplay, | ||||
|                   rc = __glut_glXGetFBConfigAttribSGIX(__glutDisplay, | ||||
| 		    fbc, glxcap[j], &mode->cap[j]); | ||||
|                   if (rc != 0) { | ||||
|                     mode->valid = 0; | ||||
| @@ -509,7 +509,7 @@ loadVisuals(int *nitems_return) | ||||
| #define GLX_VISUAL_CAVEAT_EXT 0x20 | ||||
| #endif | ||||
|  | ||||
|                   rc = glXGetFBConfigAttribSGIX(__glutDisplay, | ||||
|                   rc = __glut_glXGetFBConfigAttribSGIX(__glutDisplay, | ||||
| 		    fbc, GLX_VISUAL_CAVEAT_EXT, &rating); | ||||
|                   if (rc != 0) { | ||||
|                     mode->cap[SLOW] = 0; | ||||
| @@ -558,7 +558,7 @@ loadVisuals(int *nitems_return) | ||||
| #define GLX_TRANSPARENT_TYPE_EXT 0x23 | ||||
| #endif | ||||
|  | ||||
|                   rc = glXGetFBConfigAttribSGIX(__glutDisplay, | ||||
|                   rc = __glut_glXGetFBConfigAttribSGIX(__glutDisplay, | ||||
| 		    fbc, GLX_TRANSPARENT_TYPE_EXT, &transparent); | ||||
|                   if (rc != 0) { | ||||
|                     mode->cap[TRANSPARENT] = 0; | ||||
| @@ -573,7 +573,7 @@ loadVisuals(int *nitems_return) | ||||
| #endif | ||||
| #if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample) | ||||
|                 if (multisample) { | ||||
|                   rc = glXGetFBConfigAttribSGIX(__glutDisplay, | ||||
|                   rc = __glut_glXGetFBConfigAttribSGIX(__glutDisplay, | ||||
| 		    fbc, GLX_SAMPLES_SGIS, &mode->cap[SAMPLES]); | ||||
|                   if (rc != 0) { | ||||
|                     mode->cap[SAMPLES] = 0; | ||||
|   | ||||
| @@ -50,4 +50,19 @@ glutExtensionSupported(const char *extension) | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* XXX This isn't an official GLUT function, yet */ | ||||
| void * APIENTRY  | ||||
| glutGetProcAddress(const char *procName) | ||||
| { | ||||
| #if defined(_WIN32) | ||||
|   return (void *) wglGetProcAddress((LPCSTR) procName); | ||||
| #elif defined(GLX_ARB_get_proc_address) | ||||
|   return (void *) glXGetProcAddressARB((const GLubyte *) procName); | ||||
| #else | ||||
|   return NULL; | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| /* ENDCENTRY */ | ||||
|   | ||||
| @@ -46,3 +46,210 @@ __glutIsSupportedByGLX(char *extension) | ||||
|   return 0; | ||||
| } | ||||
| #endif | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Wrapping of GLX extension functions. | ||||
|  * Technically, we should do a runtime test to see if we've got the | ||||
|  * glXGetProcAddressARB() function.  I think GLX_ARB_get_proc_address | ||||
|  * is pretty widely supported now and any system that has | ||||
|  * GLX_ARB_get_proc_address defined in its header files should be OK | ||||
|  * at runtime. | ||||
|  */ | ||||
|  | ||||
| int | ||||
| __glut_glXBindChannelToWindowSGIX(Display *dpy, int screen, | ||||
|                                   int channel, Window window) | ||||
| { | ||||
| #ifdef GLX_ARB_get_proc_address | ||||
|   typedef int (*glXBindChannelToWindowSGIX_t) (Display *, int, int, Window); | ||||
|   static glXBindChannelToWindowSGIX_t glXBindChannelToWindowSGIX_ptr = NULL; | ||||
|   if (!glXBindChannelToWindowSGIX_ptr) { | ||||
|     glXBindChannelToWindowSGIX_ptr = (glXBindChannelToWindowSGIX_t) | ||||
|       glXGetProcAddressARB((const GLubyte *) "glXBindChannelToWindowSGIX"); | ||||
|   } | ||||
|   if (glXBindChannelToWindowSGIX_ptr) | ||||
|     return (*glXBindChannelToWindowSGIX_ptr)(dpy, screen, channel, window); | ||||
|   else | ||||
|     return 0; | ||||
| #elif defined(GLX_SGIX_video_resize) | ||||
|   return glXBindChannelToWindowSGIX(dpy, screen, channel, window); | ||||
| #else | ||||
|   return 0; | ||||
| #endif    | ||||
| } | ||||
|  | ||||
|  | ||||
| int | ||||
| __glut_glXChannelRectSGIX(Display *dpy, int screen, int channel, | ||||
|                           int x, int y, int w, int h) | ||||
| { | ||||
| #ifdef GLX_ARB_get_proc_address | ||||
|   typedef int (*glXChannelRectSGIX_t)(Display *, int, int, int, int, int, int); | ||||
|   static glXChannelRectSGIX_t glXChannelRectSGIX_ptr = NULL; | ||||
|   if (!glXChannelRectSGIX_ptr) { | ||||
|     glXChannelRectSGIX_ptr = (glXChannelRectSGIX_t) | ||||
|       glXGetProcAddressARB((const GLubyte *) "glXChannelRectSGIX"); | ||||
|   } | ||||
|   if (glXChannelRectSGIX_ptr) | ||||
|     return (*glXChannelRectSGIX_ptr)(dpy, screen, channel, x, y, w, h); | ||||
|   else | ||||
|     return 0; | ||||
| #elif defined(GLX_SGIX_video_resize) | ||||
|   return glXChannelRectSGIX(dpy, screen, channel, x, y, w, h); | ||||
| #else | ||||
|   return 0; | ||||
| #endif    | ||||
| } | ||||
|  | ||||
|  | ||||
| int | ||||
| __glut_glXQueryChannelRectSGIX(Display *dpy, int screen, int channel, | ||||
|                                int *x, int *y, int *w, int *h) | ||||
| { | ||||
| #ifdef GLX_ARB_get_proc_address | ||||
|   typedef int (*glXQueryChannelRectSGIX_t)(Display *, int, int, | ||||
|                                            int *, int *, int *, int *); | ||||
|   static glXQueryChannelRectSGIX_t glXQueryChannelRectSGIX_ptr = NULL; | ||||
|   if (!glXQueryChannelRectSGIX_ptr) { | ||||
|     glXQueryChannelRectSGIX_ptr = (glXQueryChannelRectSGIX_t) | ||||
|       glXGetProcAddressARB((const GLubyte *) "glXQueryChannelRectSGIX"); | ||||
|   } | ||||
|   if (glXQueryChannelRectSGIX_ptr) | ||||
|     return (*glXQueryChannelRectSGIX_ptr)(dpy, screen, channel, x, y, w, h); | ||||
|   else | ||||
|     return 0; | ||||
| #elif defined(GLX_SGIX_video_resize) | ||||
|   return glXQueryChannelRectSGIX(dpy, screen, channel, x, y, w, h); | ||||
| #else | ||||
|   return 0; | ||||
| #endif    | ||||
| } | ||||
|  | ||||
|  | ||||
| int | ||||
| __glut_glXQueryChannelDeltasSGIX(Display *dpy, int screen, int channel, | ||||
|                                  int *dx, int *dy, int *dw, int *dh) | ||||
| { | ||||
| #ifdef GLX_ARB_get_proc_address | ||||
|   typedef int (*glXQueryChannelDeltasSGIX_t)(Display *, int, int, | ||||
|                                              int *, int *, int *, int *); | ||||
|   static glXQueryChannelDeltasSGIX_t glXQueryChannelDeltasSGIX_ptr = NULL; | ||||
|   if (!glXQueryChannelDeltasSGIX_ptr) { | ||||
|     glXQueryChannelDeltasSGIX_ptr = (glXQueryChannelDeltasSGIX_t) | ||||
|       glXGetProcAddressARB((const GLubyte *) "glXQueryChannelDeltasSGIX"); | ||||
|   } | ||||
|   if (glXQueryChannelDeltasSGIX_ptr) | ||||
|     return (*glXQueryChannelDeltasSGIX_ptr)(dpy, screen, channel, | ||||
|                                             dx, dy, dw, dh); | ||||
|   else | ||||
|     return 0; | ||||
| #elif defined(GLX_SGIX_video_resize) | ||||
|   return glXQueryChannelDeltasSGIX(dpy, screen, channel, dx, dy, dw, dh); | ||||
| #else | ||||
|   return 0; | ||||
| #endif    | ||||
| } | ||||
|  | ||||
|  | ||||
| int | ||||
| __glut_glXChannelRectSyncSGIX(Display *dpy, int screen, | ||||
|                               int channel, GLenum synctype) | ||||
| { | ||||
| #ifdef GLX_ARB_get_proc_address | ||||
|   typedef int (*glXChannelRectSyncSGIX_t)(Display *, int, int, GLenum); | ||||
|   static glXChannelRectSyncSGIX_t glXChannelRectSyncSGIX_ptr = NULL; | ||||
|   if (!glXChannelRectSyncSGIX_ptr) { | ||||
|     glXChannelRectSyncSGIX_ptr = (glXChannelRectSyncSGIX_t) | ||||
|       glXGetProcAddressARB((const GLubyte *) "glXChannelRectSyncSGIX"); | ||||
|   } | ||||
|   if (glXChannelRectSyncSGIX_ptr) | ||||
|     return (*glXChannelRectSyncSGIX_ptr)(dpy, screen, channel, synctype); | ||||
|   else | ||||
|     return 0; | ||||
| #elif defined(GLX_SGIX_video_resize) | ||||
|   return glXChannelRectSyncSGIX(dpy, screen, channel, synctype); | ||||
| #else | ||||
|   return 0; | ||||
| #endif    | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| GLXContext | ||||
| __glut_glXCreateContextWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, | ||||
|                                       int render_type, GLXContext share_list, | ||||
|                                       Bool direct) | ||||
| { | ||||
| #ifdef GLX_ARB_get_proc_address | ||||
|   typedef GLXContext (*glXCreateContextWithConfigSGIX_t)(Display *, | ||||
|                                  GLXFBConfigSGIX, int, GLXContext, Bool); | ||||
|   static glXCreateContextWithConfigSGIX_t glXCreateContextWithConfig_ptr = NULL; | ||||
|   if (!glXCreateContextWithConfig_ptr) { | ||||
|     glXCreateContextWithConfig_ptr = (glXCreateContextWithConfigSGIX_t) | ||||
|        glXGetProcAddressARB((const GLubyte *) "glXCreateContextWithConfigSGIX"); | ||||
|   } | ||||
|   if (glXCreateContextWithConfig_ptr) | ||||
|     return (*glXCreateContextWithConfig_ptr)(dpy, config, render_type, | ||||
|                                              share_list, direct); | ||||
|   else | ||||
|     return 0; | ||||
| #elif defined(GLX_SGIX_fbconfig) | ||||
|   return glXCreateContextWithConfigSGIX(dpy, config, render_type, | ||||
|                                         share_list, direct); | ||||
| #else | ||||
|   return 0; | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| int | ||||
| __glut_glXGetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config, | ||||
|                                 int attribute, int *value) | ||||
| { | ||||
| #ifdef GLX_ARB_get_proc_address | ||||
|   typedef int (*glXGetFBConfigAttribSGIX_t)(Display *, | ||||
|                                             GLXFBConfigSGIX, int, int *); | ||||
|   static glXGetFBConfigAttribSGIX_t glXGetFBConfigAttrib_ptr = NULL; | ||||
|   if (!glXGetFBConfigAttrib_ptr) { | ||||
|     glXGetFBConfigAttrib_ptr = (glXGetFBConfigAttribSGIX_t) | ||||
|        glXGetProcAddressARB((const GLubyte *) "glXGetFBConfigAttribSGIX"); | ||||
|   } | ||||
|   if (glXGetFBConfigAttrib_ptr) | ||||
|     return (*glXGetFBConfigAttrib_ptr)(dpy, config, attribute, value); | ||||
|   else | ||||
|     return 0; | ||||
| #elif defined(GLX_SGIX_fbconfig) | ||||
|   return glXGetFBConfigAttribSGIX(dpy, config, attribute, value); | ||||
| #else | ||||
|   return 0; | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| GLXFBConfigSGIX | ||||
| __glut_glXGetFBConfigFromVisualSGIX(Display *dpy, XVisualInfo *vis) | ||||
| { | ||||
| #ifdef GLX_ARB_get_proc_address | ||||
|   typedef GLXFBConfigSGIX (*glXGetFBConfigFromVisualSGIX_t)(Display *, | ||||
|                                                             XVisualInfo *); | ||||
|   static glXGetFBConfigFromVisualSGIX_t glXGetFBConfigFromVisual_ptr = NULL; | ||||
|   if (!glXGetFBConfigFromVisual_ptr) { | ||||
|     glXGetFBConfigFromVisual_ptr = (glXGetFBConfigFromVisualSGIX_t) | ||||
|        glXGetProcAddressARB((const GLubyte *) "glXGetFBConfigFromVisualSGIX"); | ||||
|   } | ||||
|   if (glXGetFBConfigFromVisual_ptr) | ||||
|     return (*glXGetFBConfigFromVisual_ptr)(dpy, vis); | ||||
|   else | ||||
|     return 0; | ||||
| #elif defined(GLX_SGIX_fbconfig) | ||||
|   return glXGetFBConfigFromVisualSGIX(dpy, vis); | ||||
| #else | ||||
|   return 0; | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -395,7 +395,7 @@ glutEstablishOverlay(void) | ||||
|   } | ||||
| #if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) | ||||
|   if (fbc) { | ||||
|     window->ctx = glXCreateContextWithConfigSGIX(__glutDisplay, fbc, | ||||
|     window->ctx = __glut_glXCreateContextWithConfigSGIX(__glutDisplay, fbc, | ||||
|       GLX_RGBA_TYPE_SGIX, None, __glutTryDirect); | ||||
|   } else | ||||
| #endif | ||||
|   | ||||
| @@ -57,7 +57,7 @@ glutVideoResizeGet(GLenum param) | ||||
|   if (canVideoResize < 0) { | ||||
|     canVideoResize = __glutIsSupportedByGLX("GLX_SGIX_video_resize"); | ||||
|     if (canVideoResize) { | ||||
| #if __sgi | ||||
| #if defined(__sgi) && __sgi | ||||
|       /* This is a hack because IRIX 6.2, 6.3, and some 6.4 | ||||
|          versions were released with GLX_SGIX_video_resize | ||||
|          being advertised by the X server though the video | ||||
| @@ -94,7 +94,8 @@ glutVideoResizeGet(GLenum param) | ||||
|  | ||||
| #if defined(GLX_GLXEXT_PROTOTYPES) | ||||
| #endif | ||||
|         glXQueryChannelDeltasSGIX(__glutDisplay, __glutScreen, | ||||
|  | ||||
|         __glut_glXQueryChannelDeltasSGIX(__glutDisplay, __glutScreen, | ||||
|           videoResizeChannel, &dx, &dy, &dw, &dh); | ||||
|  | ||||
|         /* glXQueryChannelDeltasSGIX is an inherent X server | ||||
| @@ -138,7 +139,7 @@ glutVideoResizeGet(GLenum param) | ||||
|     if (videoResizeInUse) { | ||||
|       int x, y, width, height; | ||||
|  | ||||
|       glXQueryChannelRectSGIX(__glutDisplay, __glutScreen, | ||||
|       __glut_glXQueryChannelRectSGIX(__glutDisplay, __glutScreen, | ||||
|         videoResizeChannel, &x, &y, &width, &height); | ||||
|       switch (param) { | ||||
|       case GLUT_VIDEO_RESIZE_X: | ||||
| @@ -164,7 +165,7 @@ glutSetupVideoResizing(void) | ||||
| { | ||||
| #if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) | ||||
|   if (glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) { | ||||
|     glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen, | ||||
|     __glut_glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen, | ||||
|       videoResizeChannel, __glutCurrentWindow->win); | ||||
|     videoResizeInUse = 1; | ||||
|   } else | ||||
| @@ -178,7 +179,7 @@ glutStopVideoResizing(void) | ||||
| #if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) | ||||
|   if (glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) { | ||||
|     if (videoResizeInUse) { | ||||
|       glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen, | ||||
|       __glut_glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen, | ||||
|         videoResizeChannel, None); | ||||
|       videoResizeInUse = 0; | ||||
|     } | ||||
| @@ -196,10 +197,10 @@ glutVideoResize(int x, int y, int width, int height) | ||||
|     /* glXChannelRectSyncSGIX introduced in a patch to IRIX | ||||
|        6.2; the original unpatched IRIX 6.2 behavior is always | ||||
|        GLX_SYNC_SWAP_SGIX. */ | ||||
|     glXChannelRectSyncSGIX(__glutDisplay, __glutScreen, | ||||
|     __glut_glXChannelRectSyncSGIX(__glutDisplay, __glutScreen, | ||||
|       videoResizeChannel, GLX_SYNC_SWAP_SGIX); | ||||
| #endif | ||||
|     glXChannelRectSGIX(__glutDisplay, __glutScreen, | ||||
|     __glut_glXChannelRectSGIX(__glutDisplay, __glutScreen, | ||||
|       videoResizeChannel, x, y, width, height); | ||||
|   } | ||||
| #endif | ||||
| @@ -218,10 +219,10 @@ glutVideoPan(int x, int y, int width, int height) | ||||
|        accomplish GLX_SYNC_FRAME_SGIX on IRIX unpatched 6.2; | ||||
|        this means you'd need a glutSwapBuffers to actually | ||||
|        realize the video resize. */ | ||||
|     glXChannelRectSyncSGIX(__glutDisplay, __glutScreen, | ||||
|     __glut_glXChannelRectSyncSGIX(__glutDisplay, __glutScreen, | ||||
|       videoResizeChannel, GLX_SYNC_FRAME_SGIX); | ||||
| #endif | ||||
|     glXChannelRectSGIX(__glutDisplay, __glutScreen, | ||||
|     __glut_glXChannelRectSGIX(__glutDisplay, __glutScreen, | ||||
|       videoResizeChannel, x, y, width, height); | ||||
|   } | ||||
| #endif | ||||
|   | ||||
| @@ -577,7 +577,7 @@ __glutCreateWindow(GLUTwindow * parent, | ||||
|   window->renderWin = window->win; | ||||
| #if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) | ||||
|   if (fbc) { | ||||
|     window->ctx = glXCreateContextWithConfigSGIX(__glutDisplay, fbc, | ||||
|     window->ctx = __glut_glXCreateContextWithConfigSGIX(__glutDisplay, fbc, | ||||
|       GLX_RGBA_TYPE_SGIX, None, __glutTryDirect); | ||||
|   } else | ||||
| #endif | ||||
|   | ||||
| @@ -764,6 +764,29 @@ extern void __glutDestroyWindow( | ||||
| #if !defined(_WIN32) | ||||
| /* private routines from glut_glxext.c */ | ||||
| extern int __glutIsSupportedByGLX(char *); | ||||
| extern int __glut_glXBindChannelToWindowSGIX(Display *dpy, int screen, | ||||
|                                              int channel, Window window); | ||||
| extern int __glut_glXChannelRectSGIX(Display *dpy, int screen, int channel, | ||||
|                                      int x, int y, int w, int h); | ||||
| extern int __glut_glXQueryChannelRectSGIX(Display *dpy, int screen, | ||||
|                                           int channel, int *x, int *y, | ||||
|                                           int *w, int *h); | ||||
| extern int __glut_glXQueryChannelDeltasSGIX(Display *dpy, int screen, | ||||
|                                             int channel, int *dx, int *dy, | ||||
|                                             int *dw, int *dh); | ||||
| extern int __glut_glXChannelRectSyncSGIX(Display *dpy, int screen, int channel, | ||||
|                                          GLenum synctype); | ||||
| extern GLXContext __glut_glXCreateContextWithConfigSGIX(Display *dpy, | ||||
|                                                         GLXFBConfigSGIX config, | ||||
|                                                         int render_type, | ||||
|                                                         GLXContext share_list, | ||||
|                                                         Bool direct); | ||||
| extern int __glut_glXGetFBConfigAttribSGIX(Display *dpy, | ||||
|                                            GLXFBConfigSGIX config, | ||||
|                                            int attribute, | ||||
|                                            int *value); | ||||
| extern GLXFBConfigSGIX __glut_glXGetFBConfigFromVisualSGIX(Display *dpy, | ||||
|                                                            XVisualInfo *vis); | ||||
| #endif | ||||
|  | ||||
| /* private routines from glut_input.c */ | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| # $Id: Makefile.X11,v 1.58 2001/09/23 16:11:26 brianp Exp $ | ||||
| # $Id: Makefile.X11,v 1.58.2.4 2002/01/15 20:17:59 brianp Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  4.0 | ||||
| # Version:  4.0.1 | ||||
| # Copyright (C) 1995-2001  Brian Paul | ||||
|  | ||||
| # Makefile for core library | ||||
| @@ -200,69 +200,6 @@ OSMESA_OBJECTS = OSmesa/osmesa.o | ||||
| 	$(CC) -c -I. $(CFLAGS) $< -o $@ | ||||
|  | ||||
|  | ||||
| # UGH! These rules shouldn't be needed but IRIX's make (and others?) needs them | ||||
| X/glxapi.o: X/glxapi.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| X/fakeglx.o: X/fakeglx.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| X/xfonts.o: X/xfonts.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| X/xm_api.o: X/xm_api.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| X/xm_dd.o: X/xm_dd.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| X/xm_span.o: X/xm_span.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| X/xm_line.o: X/xm_line.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| X/xm_tri.o: X/xm_tri.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
|  | ||||
| SVGA/svgamesa.o: SVGA/svgamesa.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| SVGA/svgamesa8.o: SVGA/svgamesa8.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| SVGA/svgamesa15.o: SVGA/svgamesa15.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| SVGA/svgamesa16.o: SVGA/svgamesa16.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| SVGA/svgamesa24.o: SVGA/svgamesa24.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| SVGA/svgamesa32.o: SVGA/svgamesa32.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
|  | ||||
| OSmesa/osmesa.o: OSmesa/osmesa.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
|  | ||||
| FX/fxapi.o: FX/fxapi.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxclip.o: FX/fxclip.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxdd.o: FX/fxdd.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxddspan.o: FX/fxddspan.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxddtex.o: FX/fxddtex.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxfastpath.o: FX/fxfastpath.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxpipeline.o: FX/fxpipeline.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxrender.o: FX/fxrender.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxsanity.o: FX/fxsanity.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxsetup.o: FX/fxsetup.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxtrifuncs.o: FX/fxtrifuncs.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxtexman.o: FX/fxtexman.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxvsetup.o: FX/fxvsetup.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| FX/fxglidew.o: FX/fxglidew.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
|  | ||||
| FX/X86/fx_3dnow_fastpath.o: FX/X86/fx_3dnow_fastpath.S | ||||
|  | ||||
| X86/x86.o: X86/x86.c | ||||
| @@ -279,26 +216,9 @@ X86/matypes.h: mtypes.h tnl/t_context.h X86/gen_matypes.c | ||||
| 	./X86/gen_matypes > X86/matypes.h | ||||
| 	rm -f X86/gen_matypes X86/*.o | ||||
|  | ||||
| $(ASM_SOURCES): X86/matypes.h | ||||
|  | ||||
| GGI/ggimesa.o: GGI/ggimesa.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
|  | ||||
| Trace/tr_2string.o: Trace/tr_2string.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| Trace/tr_attrib.o: Trace/tr_attrib.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| Trace/tr_context.o: Trace/tr_context.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| Trace/tr_control.o: Trace/tr_control.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| Trace/tr_error.o: Trace/tr_error.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| Trace/tr_print.o: Trace/tr_print.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
| Trace/tr_wrapper.o: Trace/tr_wrapper.c | ||||
| 	$(CC) -c -I. -I$(INCDIR) $(CFLAGS) $< -o $@ | ||||
|  | ||||
| # We have X86/matypes.h depend on X86/matypes.h so that if ASM_SOURCES | ||||
| # is empty we don't get an invalid Makefile. | ||||
| $(ASM_SOURCES) X86/matypes.h: X86/matypes.h | ||||
|  | ||||
|  | ||||
| ##### TARGETS ##### | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: t_dd_dmatmp.h,v 1.10 2001/04/09 15:41:11 alanh Exp $ */ | ||||
| /* $Id: t_dd_dmatmp.h,v 1.10.2.3 2002/02/12 17:37:27 keithw Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -49,6 +49,7 @@ | ||||
| #define ELTS_VARS | ||||
| #define ALLOC_ELTS( nr ) | ||||
| #define EMIT_ELT( offset, elt ) | ||||
| #define EMIT_TWO_ELTS( offset, elt0, elt1 ) | ||||
| #define INCR_ELTS( nr ) | ||||
| #define ELT_INIT(prim) | ||||
| #define GET_CURRENT_VB_MAX_ELTS() 0 | ||||
| @@ -201,7 +202,7 @@ static void TAG(render_line_strip_verts)( GLcontext *ctx, | ||||
|       if (currentsz < 8) | ||||
| 	 currentsz = dmasz; | ||||
|  | ||||
|       for (j = start; j < count - 1; j += nr - 1 ) { | ||||
|       for (j = start; j + 1 < count; j += nr - 1 ) { | ||||
| 	 nr = MIN2( currentsz, count - j ); | ||||
| 	 EMIT_VERTS( ctx, j, nr ); | ||||
| 	 currentsz = dmasz; | ||||
| @@ -242,7 +243,7 @@ static void TAG(render_line_loop_verts)( GLcontext *ctx, | ||||
|       if (currentsz < 8) | ||||
| 	 currentsz = dmasz; | ||||
|  | ||||
|       for ( ; j < count - 1; j += nr - 1 ) { | ||||
|       for ( ; j + 1 < count; j += nr - 1 ) { | ||||
| 	 nr = MIN2( currentsz, count - j ); | ||||
| 	 EMIT_VERTS( ctx, j, nr ); | ||||
| 	 currentsz = dmasz; | ||||
| @@ -306,11 +307,11 @@ static void TAG(render_tri_strip_verts)( GLcontext *ctx, | ||||
|       currentsz = GET_CURRENT_VB_MAX_VERTS(); | ||||
|  | ||||
|       if (currentsz < 8) { | ||||
| 	 FIRE_VERTICES(); | ||||
| 	 NEW_BUFFER(); | ||||
| 	 currentsz = dmasz; | ||||
|       } | ||||
|  | ||||
|       if (flags & PRIM_PARITY) { | ||||
|       if ((flags & PRIM_PARITY) && count - start > 2) { | ||||
| 	 if (HAVE_TRI_STRIP_1 && 0) { | ||||
| 	 } else { | ||||
| 	    EMIT_VERTS( ctx, start, 1 ); | ||||
| @@ -323,7 +324,7 @@ static void TAG(render_tri_strip_verts)( GLcontext *ctx, | ||||
|       dmasz -= (dmasz & 1); | ||||
|       currentsz -= (currentsz & 1); | ||||
|  | ||||
|       for (j = start ; j < count - 2; j += nr - 2 ) { | ||||
|       for (j = start ; j + 2 < count; j += nr - 2 ) { | ||||
| 	 nr = MIN2( currentsz, count - j ); | ||||
| 	 EMIT_VERTS( ctx, j, nr ); | ||||
| 	 currentsz = dmasz; | ||||
| @@ -351,11 +352,11 @@ static void TAG(render_tri_fan_verts)( GLcontext *ctx, | ||||
|       INIT(GL_TRIANGLE_FAN); | ||||
|  | ||||
|       if (currentsz < 8) { | ||||
| 	 FIRE_VERTICES(); | ||||
| 	 NEW_BUFFER(); | ||||
| 	 currentsz = dmasz; | ||||
|       } | ||||
|  | ||||
|       for (j = start + 1 ; j < count - 1; j += nr - 1 ) { | ||||
|       for (j = start + 1 ; j + 1 < count; j += nr - 1 ) { | ||||
| 	 nr = MIN2( currentsz, count - j + 1 ); | ||||
| 	 EMIT_VERTS( ctx, start, 1 ); | ||||
| 	 EMIT_VERTS( ctx, j, nr - 1 ); | ||||
| @@ -389,11 +390,11 @@ static void TAG(render_poly_verts)( GLcontext *ctx, | ||||
|       INIT(GL_POLYGON); | ||||
|  | ||||
|       if (currentsz < 8) { | ||||
| 	 FIRE_VERTICES(); | ||||
| 	 NEW_BUFFER(); | ||||
| 	 currentsz = dmasz; | ||||
|       } | ||||
|  | ||||
|       for (j = start + 1 ; j < count - 1 ; j += nr - 1 ) { | ||||
|       for (j = start + 1 ; j + 1 < count ; j += nr - 1 ) { | ||||
| 	 nr = MIN2( currentsz, count - j + 1 ); | ||||
| 	 EMIT_VERTS( ctx, start, 1 ); | ||||
| 	 EMIT_VERTS( ctx, j, nr - 1 ); | ||||
| @@ -429,19 +430,14 @@ static void TAG(render_quad_strip_verts)( GLcontext *ctx, | ||||
|       currentsz = GET_CURRENT_VB_MAX_VERTS(); | ||||
|  | ||||
|       if (currentsz < 8) { | ||||
| 	 FIRE_VERTICES(); | ||||
| 	 NEW_BUFFER(); | ||||
| 	 currentsz = dmasz; | ||||
|       } | ||||
|  | ||||
|       if (flags & PRIM_PARITY) { | ||||
| 	    EMIT_VERTS( ctx, start, 1 ); | ||||
| 	    currentsz--; | ||||
|       } | ||||
|  | ||||
|       dmasz -= (dmasz & 2); | ||||
|       currentsz -= (currentsz & 2); | ||||
|  | ||||
|       for (j = start ; j < count - 3; j += nr - 2 ) { | ||||
|       for (j = start ; j + 3 < count; j += nr - 2 ) { | ||||
| 	 nr = MIN2( currentsz, count - j ); | ||||
| 	 EMIT_VERTS( ctx, j, nr ); | ||||
| 	 currentsz = dmasz; | ||||
| @@ -449,7 +445,7 @@ static void TAG(render_quad_strip_verts)( GLcontext *ctx, | ||||
|  | ||||
|       FINISH; | ||||
|  | ||||
|    } else if (HAVE_TRI_STRIPS && ctx->_TriangleCaps & DD_FLATSHADE) { | ||||
|    } else if (HAVE_TRI_STRIPS && (ctx->_TriangleCaps & DD_FLATSHADE)) { | ||||
|       if (TAG(emit_elt_verts)( ctx, start, count )) { | ||||
| 	 LOCAL_VARS; | ||||
| 	 int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS(); | ||||
| @@ -475,7 +471,7 @@ static void TAG(render_quad_strip_verts)( GLcontext *ctx, | ||||
| 	 currentsz = currentsz/6*2; | ||||
| 	 dmasz = dmasz/6*2; | ||||
|  | ||||
| 	 for (j = start; j < count - 3; j += nr - 2 ) { | ||||
| 	 for (j = start; j + 3 < count; j += nr - 2 ) { | ||||
| 	    nr = MIN2( currentsz, count - j ); | ||||
| 	    if (nr >= 4) { | ||||
| 	       GLint quads = (nr/2)-1; | ||||
| @@ -485,7 +481,7 @@ static void TAG(render_quad_strip_verts)( GLcontext *ctx, | ||||
| 	       NEW_PRIMITIVE(); | ||||
| 	       ALLOC_ELTS_NEW_PRIMITIVE( quads*6 ); | ||||
|  | ||||
| 	       for ( i = 0 ; i < quads*2 ; i+=2 ) { | ||||
| 	       for ( i = j-start ; i < j-start+quads*2 ; i+=2 ) { | ||||
| 		  EMIT_TWO_ELTS( 0, (i+0), (i+1) ); | ||||
| 		  EMIT_TWO_ELTS( 2, (i+2), (i+1) ); | ||||
| 		  EMIT_TWO_ELTS( 4, (i+3), (i+2) ); | ||||
| @@ -523,11 +519,11 @@ static void TAG(render_quad_strip_verts)( GLcontext *ctx, | ||||
|       count -= (count-start) & 1; | ||||
|  | ||||
|       if (currentsz < 8) { | ||||
| 	 FIRE_VERTICES(); | ||||
| 	 NEW_BUFFER(); | ||||
| 	 currentsz = dmasz; | ||||
|       } | ||||
|  | ||||
|       for (j = start; j < count - 3; j += nr - 2 ) { | ||||
|       for (j = start; j + 3 < count; j += nr - 2 ) { | ||||
| 	 nr = MIN2( currentsz, count - j ); | ||||
| 	 EMIT_VERTS( ctx, j, nr ); | ||||
| 	 currentsz = dmasz; | ||||
| @@ -606,7 +602,7 @@ static void TAG(render_quads_verts)( GLcontext *ctx, | ||||
| 	    NEW_PRIMITIVE(); | ||||
| 	    ALLOC_ELTS_NEW_PRIMITIVE( quads*6 ); | ||||
|  | ||||
| 	    for ( i = 0 ; i < quads*4 ; i+=4 ) { | ||||
| 	    for ( i = j-start ; i < j-start+quads*4 ; i+=4 ) { | ||||
| 	       EMIT_TWO_ELTS( 0, (i+0), (i+1) ); | ||||
| 	       EMIT_TWO_ELTS( 2, (i+3), (i+1) ); | ||||
| 	       EMIT_TWO_ELTS( 4, (i+2), (i+3) ); | ||||
| @@ -744,7 +740,7 @@ static void TAG(render_line_strip_elts)( GLcontext *ctx, | ||||
|       if (currentsz < 8) | ||||
| 	 currentsz = dmasz; | ||||
|  | ||||
|       for (j = start; j < count - 1; j += nr - 1 ) { | ||||
|       for (j = start; j + 1 < count; j += nr - 1 ) { | ||||
| 	 nr = MIN2( currentsz, count - j ); | ||||
| 	 TAG(emit_elts)( ctx, elts+j, nr ); | ||||
| 	 NEW_PRIMITIVE(); | ||||
| @@ -780,7 +776,7 @@ static void TAG(render_line_loop_elts)( GLcontext *ctx, | ||||
|  | ||||
|       currentsz = GET_CURRENT_VB_MAX_ELTS(); | ||||
|       if (currentsz < 8) { | ||||
| 	 FIRE_VERTICES(); | ||||
| 	 NEW_BUFFER(); | ||||
| 	 currentsz = dmasz; | ||||
|       } | ||||
|  | ||||
| @@ -789,7 +785,7 @@ static void TAG(render_line_loop_elts)( GLcontext *ctx, | ||||
|       currentsz--; | ||||
|       dmasz--; | ||||
|  | ||||
|       for ( ; j < count - 1; j += nr - 1 ) { | ||||
|       for ( ; j + 1 < count; j += nr - 1 ) { | ||||
| 	 nr = MIN2( currentsz, count - j ); | ||||
| /*  	 NEW_PRIMITIVE(); */ | ||||
| 	 TAG(emit_elts)( ctx, elts+j, nr ); | ||||
| @@ -862,11 +858,11 @@ static void TAG(render_tri_strip_elts)( GLcontext *ctx, | ||||
|  | ||||
|       currentsz = GET_CURRENT_VB_MAX_ELTS(); | ||||
|       if (currentsz < 8) { | ||||
| 	 FIRE_VERTICES(); | ||||
| 	 NEW_BUFFER(); | ||||
| 	 currentsz = dmasz; | ||||
|       } | ||||
|  | ||||
|       if (flags & PRIM_PARITY) { | ||||
|       if ((flags & PRIM_PARITY) && count - start > 2) { | ||||
| 	 TAG(emit_elts)( ctx, elts+start, 1 ); | ||||
|       } | ||||
|  | ||||
| @@ -875,7 +871,7 @@ static void TAG(render_tri_strip_elts)( GLcontext *ctx, | ||||
|       dmasz -= (dmasz & 1); | ||||
|       currentsz -= (currentsz & 1); | ||||
|  | ||||
|       for (j = start ; j < count - 2; j += nr - 2 ) { | ||||
|       for (j = start ; j + 2 < count; j += nr - 2 ) { | ||||
| 	 nr = MIN2( currentsz, count - j ); | ||||
| 	 TAG(emit_elts)( ctx, elts+j, nr ); | ||||
| 	 NEW_PRIMITIVE(); | ||||
| @@ -904,11 +900,11 @@ static void TAG(render_tri_fan_elts)( GLcontext *ctx, | ||||
|  | ||||
|       currentsz = GET_CURRENT_VB_MAX_ELTS(); | ||||
|       if (currentsz < 8) { | ||||
| 	 FIRE_VERTICES(); | ||||
| 	 NEW_BUFFER(); | ||||
| 	 currentsz = dmasz; | ||||
|       } | ||||
|  | ||||
|       for (j = start + 1 ; j < count - 1; j += nr - 1 ) { | ||||
|       for (j = start + 1 ; j + 1 < count; j += nr - 1 ) { | ||||
| 	 nr = MIN2( currentsz, count - j + 1 ); | ||||
| 	 TAG(emit_elts)( ctx, elts+start, 1 ); | ||||
| 	 TAG(emit_elts)( ctx, elts+j, nr - 1 ); | ||||
| @@ -940,11 +936,11 @@ static void TAG(render_poly_elts)( GLcontext *ctx, | ||||
|  | ||||
|       currentsz = GET_CURRENT_VB_MAX_ELTS(); | ||||
|       if (currentsz < 8) { | ||||
| 	 FIRE_VERTICES(); | ||||
| 	 NEW_BUFFER(); | ||||
| 	 currentsz = dmasz; | ||||
|       } | ||||
|  | ||||
|       for (j = start + 1 ; j < count - 1 ; j += nr - 1 ) { | ||||
|       for (j = start + 1 ; j + 1 < count ; j += nr - 1 ) { | ||||
| 	 nr = MIN2( currentsz, count - j + 1 ); | ||||
| 	 TAG(emit_elts)( ctx, elts+start, 1 ); | ||||
| 	 TAG(emit_elts)( ctx, elts+j, nr - 1 ); | ||||
| @@ -988,7 +984,7 @@ static void TAG(render_quad_strip_elts)( GLcontext *ctx, | ||||
| 	 currentsz = currentsz/6*2; | ||||
| 	 dmasz = dmasz/6*2; | ||||
|  | ||||
| 	 for (j = start; j < count - 3; j += nr - 2 ) { | ||||
| 	 for (j = start; j + 3 < count; j += nr - 2 ) { | ||||
| 	    nr = MIN2( currentsz, count - j ); | ||||
|  | ||||
| 	    if (nr >= 4) | ||||
| @@ -1001,7 +997,7 @@ static void TAG(render_quad_strip_elts)( GLcontext *ctx, | ||||
| 	       NEW_PRIMITIVE(); | ||||
| 	       ALLOC_ELTS_NEW_PRIMITIVE( quads*6 ); | ||||
|  | ||||
| 	       for ( i = 0 ; i < quads ; i++, elts += 2 ) { | ||||
| 	       for ( i = j-start ; i < j-start+quads ; i++, elts += 2 ) { | ||||
| 		  EMIT_TWO_ELTS( 0, elts[0], elts[1] ); | ||||
| 		  EMIT_TWO_ELTS( 2, elts[2], elts[1] ); | ||||
| 		  EMIT_TWO_ELTS( 4, elts[3], elts[2] ); | ||||
| @@ -1017,7 +1013,7 @@ static void TAG(render_quad_strip_elts)( GLcontext *ctx, | ||||
|       else { | ||||
| 	 ELT_INIT( GL_TRIANGLE_STRIP ); | ||||
|  | ||||
| 	 for (j = start; j < count - 3; j += nr - 2 ) { | ||||
| 	 for (j = start; j + 3 < count; j += nr - 2 ) { | ||||
| 	    nr = MIN2( currentsz, count - j ); | ||||
| 	    TAG(emit_elts)( ctx, elts+j, nr ); | ||||
| 	    NEW_PRIMITIVE(); | ||||
| @@ -1058,7 +1054,7 @@ static void TAG(render_quads_elts)( GLcontext *ctx, | ||||
|       if (currentsz < 8) | ||||
| 	 currentsz = dmasz; | ||||
|  | ||||
|       for (j = start; j < count - 3; j += nr - 2 ) { | ||||
|       for (j = start; j + 3 < count; j += nr - 2 ) { | ||||
| 	 nr = MIN2( currentsz, count - j ); | ||||
|  | ||||
| 	 if (nr >= 4) | ||||
| @@ -1069,7 +1065,7 @@ static void TAG(render_quads_elts)( GLcontext *ctx, | ||||
| 	    NEW_PRIMITIVE(); | ||||
| 	    ALLOC_ELTS_NEW_PRIMITIVE( quads * 6 ); | ||||
|  | ||||
| 	    for ( i = 0 ; i < quads ; i++, elts += 4 ) { | ||||
| 	    for ( i = j-start ; i < j-start+quads ; i++, elts += 4 ) { | ||||
| 	       EMIT_TWO_ELTS( 0, elts[0], elts[1] ); | ||||
| 	       EMIT_TWO_ELTS( 2, elts[3], elts[1] ); | ||||
| 	       EMIT_TWO_ELTS( 4, elts[2], elts[3] ); | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user