Added missing templates
authorSam Lantinga <slouken@libsdl.org>
Tue, 29 Sep 2009 07:59:23 +0000
changeset 3329232e5e00e398
parent 3328 7da18fe4cdd9
child 3330 e15bcb04c9b4
Added missing templates
Xcode/TemplatesForXcodeTiger/SDL Application/English.lproj/InfoPlist.strings
Xcode/TemplatesForXcodeTiger/SDL Application/Info.plist
Xcode/TemplatesForXcodeTiger/SDL Application/SDLApp.xcodeproj/TemplateInfo.plist
Xcode/TemplatesForXcodeTiger/SDL Application/SDLApp.xcodeproj/project.pbxproj
Xcode/TemplatesForXcodeTiger/SDL Application/SDLApp_Prefix.pch
Xcode/TemplatesForXcodeTiger/SDL Application/SDLMain.h
Xcode/TemplatesForXcodeTiger/SDL Application/SDLMain.m
Xcode/TemplatesForXcodeTiger/SDL Application/main.c
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/English.lproj/InfoPlist.strings
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/English.lproj/SDLMain.nib/classes.nib
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/English.lproj/SDLMain.nib/info.nib
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/English.lproj/SDLMain.nib/objects.nib
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/Info.plist
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLApp_Prefix.pch
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLCocoaApp.xcodeproj/TemplateInfo.plist
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLCocoaApp.xcodeproj/project.pbxproj
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLMain.h
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLMain.m
Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/main.c
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/English.lproj/InfoPlist.strings
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/Info.plist
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLApp_Prefix.pch
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLMain.h
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLMain.m
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLOpenGLApp.xcodeproj/TemplateInfo.plist
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLOpenGLApp.xcodeproj/project.pbxproj
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/atlantis.c
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/atlantis.h
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/dolphin.c
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/shark.c
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/swim.c
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/whale.c
Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/main.c
     1.1 Binary file Xcode/TemplatesForXcodeTiger/SDL Application/English.lproj/InfoPlist.strings has changed
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Application/Info.plist	Tue Sep 29 07:59:23 2009 +0000
     2.3 @@ -0,0 +1,28 @@
     2.4 +<?xml version="1.0" encoding="UTF-8"?>
     2.5 +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
     2.6 +<plist version="1.0">
     2.7 +<dict>
     2.8 +	<key>CFBundleDevelopmentRegion</key>
     2.9 +	<string>English</string>
    2.10 +	<key>CFBundleExecutable</key>
    2.11 +	<string>${EXECUTABLE_NAME}</string>
    2.12 +	<key>CFBundleIconFile</key>
    2.13 +	<string></string>
    2.14 +	<key>CFBundleIdentifier</key>
    2.15 +	<string>com.yourcompany.«PROJECTNAMEASXML»</string>
    2.16 +	<key>CFBundleInfoDictionaryVersion</key>
    2.17 +	<string>6.0</string>
    2.18 +	<key>CFBundleName</key>
    2.19 +	<string>${PRODUCT_NAME}</string>
    2.20 +	<key>CFBundlePackageType</key>
    2.21 +	<string>APPL</string>
    2.22 +	<key>CFBundleSignature</key>
    2.23 +	<string>????</string>
    2.24 +	<key>CFBundleVersion</key>
    2.25 +	<string>1.0</string>
    2.26 +	<key>NSMainNibFile</key>
    2.27 +	<string>SDLMain</string>
    2.28 +	<key>NSPrincipalClass</key>
    2.29 +	<string>NSApplication</string>
    2.30 +</dict>
    2.31 +</plist>
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Application/SDLApp.xcodeproj/TemplateInfo.plist	Tue Sep 29 07:59:23 2009 +0000
     3.3 @@ -0,0 +1,12 @@
     3.4 +{
     3.5 +	FilesToRename = {
     3.6 +		"SDLApp_Prefix.pch" = "PROJECTNAME_Prefix.pch";
     3.7 +	};
     3.8 +	FilesToMacroExpand = (
     3.9 +		"PROJECTNAME_Prefix.pch",
    3.10 +		"Info.plist",
    3.11 +		"English.lproj/InfoPlist.strings",
    3.12 +		"main.c",
    3.13 +	);
    3.14 +	Description = "This project builds an SDL-based application.";
    3.15 +}
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Application/SDLApp.xcodeproj/project.pbxproj	Tue Sep 29 07:59:23 2009 +0000
     4.3 @@ -0,0 +1,297 @@
     4.4 +// !$*UTF8*$!
     4.5 +{
     4.6 +	archiveVersion = 1;
     4.7 +	classes = {
     4.8 +	};
     4.9 +	objectVersion = 42;
    4.10 +	objects = {
    4.11 +
    4.12 +/* Begin PBXBuildFile section */
    4.13 +		002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; };
    4.14 +		002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; };
    4.15 +		002F3A3F09D088BA00EBEB88 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F3A3E09D088BA00EBEB88 /* main.c */; };
    4.16 +		8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
    4.17 +		8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
    4.18 +/* End PBXBuildFile section */
    4.19 +
    4.20 +/* Begin PBXCopyFilesBuildPhase section */
    4.21 +		002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */ = {
    4.22 +			isa = PBXCopyFilesBuildPhase;
    4.23 +			buildActionMask = 2147483647;
    4.24 +			dstPath = "";
    4.25 +			dstSubfolderSpec = 10;
    4.26 +			files = (
    4.27 +				002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */,
    4.28 +			);
    4.29 +			name = "Copy Frameworks into .app bundle";
    4.30 +			runOnlyForDeploymentPostprocessing = 0;
    4.31 +		};
    4.32 +/* End PBXCopyFilesBuildPhase section */
    4.33 +
    4.34 +/* Begin PBXFileReference section */
    4.35 +		002F39F909D0881F00EBEB88 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.framework; sourceTree = "<absolute>"; };
    4.36 +		002F3A3E09D088BA00EBEB88 /* main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = SOURCE_ROOT; };
    4.37 +		089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
    4.38 +		1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
    4.39 +		29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
    4.40 +		29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
    4.41 +		32CA4F630368D1EE00C91783 /* «PROJECTNAME»_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "«PROJECTNAME»_Prefix.pch"; sourceTree = "<group>"; };
    4.42 +		8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
    4.43 +		8D1107320486CEB800E47090 /* «PROJECTNAME».app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "«PROJECTNAME».app"; sourceTree = BUILT_PRODUCTS_DIR; };
    4.44 +/* End PBXFileReference section */
    4.45 +
    4.46 +/* Begin PBXFrameworksBuildPhase section */
    4.47 +		8D11072E0486CEB800E47090 /* Frameworks */ = {
    4.48 +			isa = PBXFrameworksBuildPhase;
    4.49 +			buildActionMask = 2147483647;
    4.50 +			files = (
    4.51 +				002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */,
    4.52 +				8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
    4.53 +			);
    4.54 +			runOnlyForDeploymentPostprocessing = 0;
    4.55 +		};
    4.56 +/* End PBXFrameworksBuildPhase section */
    4.57 +
    4.58 +/* Begin PBXGroup section */
    4.59 +		080E96DDFE201D6D7F000001 /* Classes */ = {
    4.60 +			isa = PBXGroup;
    4.61 +			children = (
    4.62 +			);
    4.63 +			name = Classes;
    4.64 +			sourceTree = "<group>";
    4.65 +		};
    4.66 +		1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
    4.67 +			isa = PBXGroup;
    4.68 +			children = (
    4.69 +				002F39F909D0881F00EBEB88 /* SDL.framework */,
    4.70 +				1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
    4.71 +			);
    4.72 +			name = "Linked Frameworks";
    4.73 +			sourceTree = "<group>";
    4.74 +		};
    4.75 +		1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
    4.76 +			isa = PBXGroup;
    4.77 +			children = (
    4.78 +				29B97324FDCFA39411CA2CEA /* AppKit.framework */,
    4.79 +				29B97325FDCFA39411CA2CEA /* Foundation.framework */,
    4.80 +			);
    4.81 +			name = "Other Frameworks";
    4.82 +			sourceTree = "<group>";
    4.83 +		};
    4.84 +		19C28FACFE9D520D11CA2CBB /* Products */ = {
    4.85 +			isa = PBXGroup;
    4.86 +			children = (
    4.87 +				8D1107320486CEB800E47090 /* «PROJECTNAME».app */,
    4.88 +			);
    4.89 +			name = Products;
    4.90 +			sourceTree = "<group>";
    4.91 +		};
    4.92 +		29B97314FDCFA39411CA2CEA /* «PROJECTNAMEASXML» */ = {
    4.93 +			isa = PBXGroup;
    4.94 +			children = (
    4.95 +				080E96DDFE201D6D7F000001 /* Classes */,
    4.96 +				29B97315FDCFA39411CA2CEA /* Other Sources */,
    4.97 +				29B97317FDCFA39411CA2CEA /* Resources */,
    4.98 +				29B97323FDCFA39411CA2CEA /* Frameworks */,
    4.99 +				19C28FACFE9D520D11CA2CBB /* Products */,
   4.100 +			);
   4.101 +			name = "«PROJECTNAMEASXML»";
   4.102 +			sourceTree = "<group>";
   4.103 +		};
   4.104 +		29B97315FDCFA39411CA2CEA /* Other Sources */ = {
   4.105 +			isa = PBXGroup;
   4.106 +			children = (
   4.107 +				32CA4F630368D1EE00C91783 /* «PROJECTNAME»_Prefix.pch */,
   4.108 +				002F3A3E09D088BA00EBEB88 /* main.c */,
   4.109 +			);
   4.110 +			name = "Other Sources";
   4.111 +			sourceTree = "<group>";
   4.112 +		};
   4.113 +		29B97317FDCFA39411CA2CEA /* Resources */ = {
   4.114 +			isa = PBXGroup;
   4.115 +			children = (
   4.116 +				8D1107310486CEB800E47090 /* Info.plist */,
   4.117 +				089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
   4.118 +			);
   4.119 +			name = Resources;
   4.120 +			sourceTree = "<group>";
   4.121 +		};
   4.122 +		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
   4.123 +			isa = PBXGroup;
   4.124 +			children = (
   4.125 +				1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
   4.126 +				1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
   4.127 +			);
   4.128 +			name = Frameworks;
   4.129 +			sourceTree = "<group>";
   4.130 +		};
   4.131 +/* End PBXGroup section */
   4.132 +
   4.133 +/* Begin PBXNativeTarget section */
   4.134 +		8D1107260486CEB800E47090 /* «PROJECTNAME» */ = {
   4.135 +			isa = PBXNativeTarget;
   4.136 +			buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */;
   4.137 +			buildPhases = (
   4.138 +				8D1107290486CEB800E47090 /* Resources */,
   4.139 +				8D11072C0486CEB800E47090 /* Sources */,
   4.140 +				8D11072E0486CEB800E47090 /* Frameworks */,
   4.141 +				002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */,
   4.142 +			);
   4.143 +			buildRules = (
   4.144 +			);
   4.145 +			dependencies = (
   4.146 +			);
   4.147 +			name = "«PROJECTNAME»";
   4.148 +			productInstallPath = "$(HOME)/Applications";
   4.149 +			productName = "«PROJECTNAME»";
   4.150 +			productReference = 8D1107320486CEB800E47090 /* «PROJECTNAME».app */;
   4.151 +			productType = "com.apple.product-type.application";
   4.152 +		};
   4.153 +/* End PBXNativeTarget section */
   4.154 +
   4.155 +/* Begin PBXProject section */
   4.156 +		29B97313FDCFA39411CA2CEA /* Project object */ = {
   4.157 +			isa = PBXProject;
   4.158 +			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SDLApp" */;
   4.159 +			compatibilityVersion = "Xcode 2.4";
   4.160 +			hasScannedForEncodings = 1;
   4.161 +			mainGroup = 29B97314FDCFA39411CA2CEA /* «PROJECTNAMEASXML» */;
   4.162 +			projectDirPath = "";
   4.163 +			projectRoot = "";
   4.164 +			targets = (
   4.165 +				8D1107260486CEB800E47090 /* «PROJECTNAME» */,
   4.166 +			);
   4.167 +		};
   4.168 +/* End PBXProject section */
   4.169 +
   4.170 +/* Begin PBXResourcesBuildPhase section */
   4.171 +		8D1107290486CEB800E47090 /* Resources */ = {
   4.172 +			isa = PBXResourcesBuildPhase;
   4.173 +			buildActionMask = 2147483647;
   4.174 +			files = (
   4.175 +				8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
   4.176 +			);
   4.177 +			runOnlyForDeploymentPostprocessing = 0;
   4.178 +		};
   4.179 +/* End PBXResourcesBuildPhase section */
   4.180 +
   4.181 +/* Begin PBXSourcesBuildPhase section */
   4.182 +		8D11072C0486CEB800E47090 /* Sources */ = {
   4.183 +			isa = PBXSourcesBuildPhase;
   4.184 +			buildActionMask = 2147483647;
   4.185 +			files = (
   4.186 +				002F3A3F09D088BA00EBEB88 /* main.c in Sources */,
   4.187 +			);
   4.188 +			runOnlyForDeploymentPostprocessing = 0;
   4.189 +		};
   4.190 +/* End PBXSourcesBuildPhase section */
   4.191 +
   4.192 +/* Begin PBXVariantGroup section */
   4.193 +		089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
   4.194 +			isa = PBXVariantGroup;
   4.195 +			children = (
   4.196 +				089C165DFE840E0CC02AAC07 /* English */,
   4.197 +			);
   4.198 +			name = InfoPlist.strings;
   4.199 +			sourceTree = "<group>";
   4.200 +		};
   4.201 +/* End PBXVariantGroup section */
   4.202 +
   4.203 +/* Begin XCBuildConfiguration section */
   4.204 +		C01FCF4B08A954540054247B /* Debug */ = {
   4.205 +			isa = XCBuildConfiguration;
   4.206 +			buildSettings = {
   4.207 +				COPY_PHASE_STRIP = NO;
   4.208 +				GCC_DYNAMIC_NO_PIC = NO;
   4.209 +				GCC_ENABLE_FIX_AND_CONTINUE = YES;
   4.210 +				GCC_MODEL_TUNING = G5;
   4.211 +				GCC_OPTIMIZATION_LEVEL = 0;
   4.212 +				INFOPLIST_FILE = Info.plist;
   4.213 +				INSTALL_PATH = "$(HOME)/Applications";
   4.214 +				PRODUCT_NAME = "«PROJECTNAME»";
   4.215 +				WRAPPER_EXTENSION = app;
   4.216 +				ZERO_LINK = YES;
   4.217 +			};
   4.218 +			name = Debug;
   4.219 +		};
   4.220 +		C01FCF4C08A954540054247B /* Release */ = {
   4.221 +			isa = XCBuildConfiguration;
   4.222 +			buildSettings = {
   4.223 +				ARCHS = (
   4.224 +					ppc,
   4.225 +					i386,
   4.226 +				);
   4.227 +				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
   4.228 +				GCC_MODEL_TUNING = G5;
   4.229 +				INFOPLIST_FILE = Info.plist;
   4.230 +				INSTALL_PATH = "$(HOME)/Applications";
   4.231 +				PRODUCT_NAME = "«PROJECTNAME»";
   4.232 +				WRAPPER_EXTENSION = app;
   4.233 +			};
   4.234 +			name = Release;
   4.235 +		};
   4.236 +		C01FCF4F08A954540054247B /* Debug */ = {
   4.237 +			isa = XCBuildConfiguration;
   4.238 +			buildSettings = {
   4.239 +				FRAMEWORK_SEARCH_PATHS = (
   4.240 +					"$(HOME)/Library/Frameworks",
   4.241 +					/Library/Frameworks,
   4.242 +					"$(FRAMEWORK_SEARCH_PATHS)",
   4.243 +				);
   4.244 +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
   4.245 +				GCC_WARN_UNUSED_VARIABLE = YES;
   4.246 +				HEADER_SEARCH_PATHS = (
   4.247 +					"$(HOME)/Library/Frameworks/SDL.framework/Headers",
   4.248 +					/Library/Frameworks/SDL.framework/Headers,
   4.249 +					"$(HEADER_SEARCH_PATHS)",
   4.250 +				);
   4.251 +				PREBINDING = NO;
   4.252 +				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
   4.253 +			};
   4.254 +			name = Debug;
   4.255 +		};
   4.256 +		C01FCF5008A954540054247B /* Release */ = {
   4.257 +			isa = XCBuildConfiguration;
   4.258 +			buildSettings = {
   4.259 +				FRAMEWORK_SEARCH_PATHS = (
   4.260 +					"$(HOME)/Library/Frameworks",
   4.261 +					/Library/Frameworks,
   4.262 +					"$(FRAMEWORK_SEARCH_PATHS)",
   4.263 +				);
   4.264 +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
   4.265 +				GCC_WARN_UNUSED_VARIABLE = YES;
   4.266 +				HEADER_SEARCH_PATHS = (
   4.267 +					"$(HOME)/Library/Frameworks/SDL.framework/Headers",
   4.268 +					/Library/Frameworks/SDL.framework/Headers,
   4.269 +					"$(HEADER_SEARCH_PATHS)",
   4.270 +				);
   4.271 +				PREBINDING = NO;
   4.272 +				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
   4.273 +			};
   4.274 +			name = Release;
   4.275 +		};
   4.276 +/* End XCBuildConfiguration section */
   4.277 +
   4.278 +/* Begin XCConfigurationList section */
   4.279 +		C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */ = {
   4.280 +			isa = XCConfigurationList;
   4.281 +			buildConfigurations = (
   4.282 +				C01FCF4B08A954540054247B /* Debug */,
   4.283 +				C01FCF4C08A954540054247B /* Release */,
   4.284 +			);
   4.285 +			defaultConfigurationIsVisible = 0;
   4.286 +			defaultConfigurationName = Release;
   4.287 +		};
   4.288 +		C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SDLApp" */ = {
   4.289 +			isa = XCConfigurationList;
   4.290 +			buildConfigurations = (
   4.291 +				C01FCF4F08A954540054247B /* Debug */,
   4.292 +				C01FCF5008A954540054247B /* Release */,
   4.293 +			);
   4.294 +			defaultConfigurationIsVisible = 0;
   4.295 +			defaultConfigurationName = Release;
   4.296 +		};
   4.297 +/* End XCConfigurationList section */
   4.298 +	};
   4.299 +	rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
   4.300 +}
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Application/SDLApp_Prefix.pch	Tue Sep 29 07:59:23 2009 +0000
     5.3 @@ -0,0 +1,9 @@
     5.4 +//
     5.5 +// Prefix header for all source files of the 'PROJECTNAME' target in the 'PROJECTNAME' project
     5.6 +//
     5.7 +
     5.8 +#include "SDL.h"
     5.9 +
    5.10 +#ifdef __OBJC__
    5.11 +    #import <Cocoa/Cocoa.h>
    5.12 +#endif
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Application/SDLMain.h	Tue Sep 29 07:59:23 2009 +0000
     6.3 @@ -0,0 +1,16 @@
     6.4 +/*   SDLMain.m - main entry point for our Cocoa-ized SDL app
     6.5 +       Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
     6.6 +       Non-NIB-Code & other changes: Max Horn <max@quendi.de>
     6.7 +
     6.8 +    Feel free to customize this file to suit your needs
     6.9 +*/
    6.10 +
    6.11 +#ifndef _SDLMain_h_
    6.12 +#define _SDLMain_h_
    6.13 +
    6.14 +#import <Cocoa/Cocoa.h>
    6.15 +
    6.16 +@interface SDLMain : NSObject
    6.17 +@end
    6.18 +
    6.19 +#endif /* _SDLMain_h_ */
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Application/SDLMain.m	Tue Sep 29 07:59:23 2009 +0000
     7.3 @@ -0,0 +1,383 @@
     7.4 +/*   SDLMain.m - main entry point for our Cocoa-ized SDL app
     7.5 +       Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
     7.6 +       Non-NIB-Code & other changes: Max Horn <max@quendi.de>
     7.7 +
     7.8 +    Feel free to customize this file to suit your needs
     7.9 +*/
    7.10 +
    7.11 +#include "SDL.h"
    7.12 +#include "SDLMain.h"
    7.13 +#include <sys/param.h> /* for MAXPATHLEN */
    7.14 +#include <unistd.h>
    7.15 +
    7.16 +/* For some reaon, Apple removed setAppleMenu from the headers in 10.4,
    7.17 + but the method still is there and works. To avoid warnings, we declare
    7.18 + it ourselves here. */
    7.19 +@interface NSApplication(SDL_Missing_Methods)
    7.20 +- (void)setAppleMenu:(NSMenu *)menu;
    7.21 +@end
    7.22 +
    7.23 +/* Use this flag to determine whether we use SDLMain.nib or not */
    7.24 +#define		SDL_USE_NIB_FILE	0
    7.25 +
    7.26 +/* Use this flag to determine whether we use CPS (docking) or not */
    7.27 +#define		SDL_USE_CPS		1
    7.28 +#ifdef SDL_USE_CPS
    7.29 +/* Portions of CPS.h */
    7.30 +typedef struct CPSProcessSerNum
    7.31 +{
    7.32 +	UInt32		lo;
    7.33 +	UInt32		hi;
    7.34 +} CPSProcessSerNum;
    7.35 +
    7.36 +extern OSErr	CPSGetCurrentProcess( CPSProcessSerNum *psn);
    7.37 +extern OSErr 	CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5);
    7.38 +extern OSErr	CPSSetFrontProcess( CPSProcessSerNum *psn);
    7.39 +
    7.40 +#endif /* SDL_USE_CPS */
    7.41 +
    7.42 +static int    gArgc;
    7.43 +static char  **gArgv;
    7.44 +static BOOL   gFinderLaunch;
    7.45 +static BOOL   gCalledAppMainline = FALSE;
    7.46 +
    7.47 +static NSString *getApplicationName(void)
    7.48 +{
    7.49 +    const NSDictionary *dict;
    7.50 +    NSString *appName = 0;
    7.51 +
    7.52 +    /* Determine the application name */
    7.53 +    dict = (const NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle());
    7.54 +    if (dict)
    7.55 +        appName = [dict objectForKey: @"CFBundleName"];
    7.56 +    
    7.57 +    if (![appName length])
    7.58 +        appName = [[NSProcessInfo processInfo] processName];
    7.59 +
    7.60 +    return appName;
    7.61 +}
    7.62 +
    7.63 +#if SDL_USE_NIB_FILE
    7.64 +/* A helper category for NSString */
    7.65 +@interface NSString (ReplaceSubString)
    7.66 +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString;
    7.67 +@end
    7.68 +#endif
    7.69 +
    7.70 +@interface SDLApplication : NSApplication
    7.71 +@end
    7.72 +
    7.73 +@implementation SDLApplication
    7.74 +/* Invoked from the Quit menu item */
    7.75 +- (void)terminate:(id)sender
    7.76 +{
    7.77 +    /* Post a SDL_QUIT event */
    7.78 +    SDL_Event event;
    7.79 +    event.type = SDL_QUIT;
    7.80 +    SDL_PushEvent(&event);
    7.81 +}
    7.82 +@end
    7.83 +
    7.84 +/* The main class of the application, the application's delegate */
    7.85 +@implementation SDLMain
    7.86 +
    7.87 +/* Set the working directory to the .app's parent directory */
    7.88 +- (void) setupWorkingDirectory:(BOOL)shouldChdir
    7.89 +{
    7.90 +    if (shouldChdir)
    7.91 +    {
    7.92 +        char parentdir[MAXPATHLEN];
    7.93 +        CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle());
    7.94 +        CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url);
    7.95 +        if (CFURLGetFileSystemRepresentation(url2, 1, (UInt8 *)parentdir, MAXPATHLEN)) {
    7.96 +            chdir(parentdir);   /* chdir to the binary app's parent */
    7.97 +        }
    7.98 +        CFRelease(url);
    7.99 +        CFRelease(url2);
   7.100 +    }
   7.101 +}
   7.102 +
   7.103 +#if SDL_USE_NIB_FILE
   7.104 +
   7.105 +/* Fix menu to contain the real app name instead of "SDL App" */
   7.106 +- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName
   7.107 +{
   7.108 +    NSRange aRange;
   7.109 +    NSEnumerator *enumerator;
   7.110 +    NSMenuItem *menuItem;
   7.111 +
   7.112 +    aRange = [[aMenu title] rangeOfString:@"SDL App"];
   7.113 +    if (aRange.length != 0)
   7.114 +        [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]];
   7.115 +
   7.116 +    enumerator = [[aMenu itemArray] objectEnumerator];
   7.117 +    while ((menuItem = [enumerator nextObject]))
   7.118 +    {
   7.119 +        aRange = [[menuItem title] rangeOfString:@"SDL App"];
   7.120 +        if (aRange.length != 0)
   7.121 +            [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]];
   7.122 +        if ([menuItem hasSubmenu])
   7.123 +            [self fixMenu:[menuItem submenu] withAppName:appName];
   7.124 +    }
   7.125 +    [ aMenu sizeToFit ];
   7.126 +}
   7.127 +
   7.128 +#else
   7.129 +
   7.130 +static void setApplicationMenu(void)
   7.131 +{
   7.132 +    /* warning: this code is very odd */
   7.133 +    NSMenu *appleMenu;
   7.134 +    NSMenuItem *menuItem;
   7.135 +    NSString *title;
   7.136 +    NSString *appName;
   7.137 +    
   7.138 +    appName = getApplicationName();
   7.139 +    appleMenu = [[NSMenu alloc] initWithTitle:@""];
   7.140 +    
   7.141 +    /* Add menu items */
   7.142 +    title = [@"About " stringByAppendingString:appName];
   7.143 +    [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];
   7.144 +
   7.145 +    [appleMenu addItem:[NSMenuItem separatorItem]];
   7.146 +
   7.147 +    title = [@"Hide " stringByAppendingString:appName];
   7.148 +    [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"];
   7.149 +
   7.150 +    menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
   7.151 +    [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)];
   7.152 +
   7.153 +    [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""];
   7.154 +
   7.155 +    [appleMenu addItem:[NSMenuItem separatorItem]];
   7.156 +
   7.157 +    title = [@"Quit " stringByAppendingString:appName];
   7.158 +    [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"];
   7.159 +
   7.160 +    
   7.161 +    /* Put menu into the menubar */
   7.162 +    menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
   7.163 +    [menuItem setSubmenu:appleMenu];
   7.164 +    [[NSApp mainMenu] addItem:menuItem];
   7.165 +
   7.166 +    /* Tell the application object that this is now the application menu */
   7.167 +    [NSApp setAppleMenu:appleMenu];
   7.168 +
   7.169 +    /* Finally give up our references to the objects */
   7.170 +    [appleMenu release];
   7.171 +    [menuItem release];
   7.172 +}
   7.173 +
   7.174 +/* Create a window menu */
   7.175 +static void setupWindowMenu(void)
   7.176 +{
   7.177 +    NSMenu      *windowMenu;
   7.178 +    NSMenuItem  *windowMenuItem;
   7.179 +    NSMenuItem  *menuItem;
   7.180 +
   7.181 +    windowMenu = [[NSMenu alloc] initWithTitle:@"Window"];
   7.182 +    
   7.183 +    /* "Minimize" item */
   7.184 +    menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"];
   7.185 +    [windowMenu addItem:menuItem];
   7.186 +    [menuItem release];
   7.187 +    
   7.188 +    /* Put menu into the menubar */
   7.189 +    windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""];
   7.190 +    [windowMenuItem setSubmenu:windowMenu];
   7.191 +    [[NSApp mainMenu] addItem:windowMenuItem];
   7.192 +    
   7.193 +    /* Tell the application object that this is now the window menu */
   7.194 +    [NSApp setWindowsMenu:windowMenu];
   7.195 +
   7.196 +    /* Finally give up our references to the objects */
   7.197 +    [windowMenu release];
   7.198 +    [windowMenuItem release];
   7.199 +}
   7.200 +
   7.201 +/* Replacement for NSApplicationMain */
   7.202 +static void CustomApplicationMain (int argc, char **argv)
   7.203 +{
   7.204 +    NSAutoreleasePool	*pool = [[NSAutoreleasePool alloc] init];
   7.205 +    SDLMain				*sdlMain;
   7.206 +
   7.207 +    /* Ensure the application object is initialised */
   7.208 +    [SDLApplication sharedApplication];
   7.209 +    
   7.210 +#ifdef SDL_USE_CPS
   7.211 +    {
   7.212 +        CPSProcessSerNum PSN;
   7.213 +        /* Tell the dock about us */
   7.214 +        if (!CPSGetCurrentProcess(&PSN))
   7.215 +            if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103))
   7.216 +                if (!CPSSetFrontProcess(&PSN))
   7.217 +                    [SDLApplication sharedApplication];
   7.218 +    }
   7.219 +#endif /* SDL_USE_CPS */
   7.220 +
   7.221 +    /* Set up the menubar */
   7.222 +    [NSApp setMainMenu:[[NSMenu alloc] init]];
   7.223 +    setApplicationMenu();
   7.224 +    setupWindowMenu();
   7.225 +
   7.226 +    /* Create SDLMain and make it the app delegate */
   7.227 +    sdlMain = [[SDLMain alloc] init];
   7.228 +    [NSApp setDelegate:sdlMain];
   7.229 +    
   7.230 +    /* Start the main event loop */
   7.231 +    [NSApp run];
   7.232 +    
   7.233 +    [sdlMain release];
   7.234 +    [pool release];
   7.235 +}
   7.236 +
   7.237 +#endif
   7.238 +
   7.239 +
   7.240 +/*
   7.241 + * Catch document open requests...this lets us notice files when the app
   7.242 + *  was launched by double-clicking a document, or when a document was
   7.243 + *  dragged/dropped on the app's icon. You need to have a
   7.244 + *  CFBundleDocumentsType section in your Info.plist to get this message,
   7.245 + *  apparently.
   7.246 + *
   7.247 + * Files are added to gArgv, so to the app, they'll look like command line
   7.248 + *  arguments. Previously, apps launched from the finder had nothing but
   7.249 + *  an argv[0].
   7.250 + *
   7.251 + * This message may be received multiple times to open several docs on launch.
   7.252 + *
   7.253 + * This message is ignored once the app's mainline has been called.
   7.254 + */
   7.255 +- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
   7.256 +{
   7.257 +    const char *temparg;
   7.258 +    size_t arglen;
   7.259 +    char *arg;
   7.260 +    char **newargv;
   7.261 +
   7.262 +    if (!gFinderLaunch)  /* MacOS is passing command line args. */
   7.263 +        return FALSE;
   7.264 +
   7.265 +    if (gCalledAppMainline)  /* app has started, ignore this document. */
   7.266 +        return FALSE;
   7.267 +
   7.268 +    temparg = [filename UTF8String];
   7.269 +    arglen = SDL_strlen(temparg) + 1;
   7.270 +    arg = (char *) SDL_malloc(arglen);
   7.271 +    if (arg == NULL)
   7.272 +        return FALSE;
   7.273 +
   7.274 +    newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2));
   7.275 +    if (newargv == NULL)
   7.276 +    {
   7.277 +        SDL_free(arg);
   7.278 +        return FALSE;
   7.279 +    }
   7.280 +    gArgv = newargv;
   7.281 +
   7.282 +    SDL_strlcpy(arg, temparg, arglen);
   7.283 +    gArgv[gArgc++] = arg;
   7.284 +    gArgv[gArgc] = NULL;
   7.285 +    return TRUE;
   7.286 +}
   7.287 +
   7.288 +
   7.289 +/* Called when the internal event loop has just started running */
   7.290 +- (void) applicationDidFinishLaunching: (NSNotification *) note
   7.291 +{
   7.292 +    int status;
   7.293 +
   7.294 +    /* Set the working directory to the .app's parent directory */
   7.295 +    [self setupWorkingDirectory:gFinderLaunch];
   7.296 +
   7.297 +#if SDL_USE_NIB_FILE
   7.298 +    /* Set the main menu to contain the real app name instead of "SDL App" */
   7.299 +    [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()];
   7.300 +#endif
   7.301 +
   7.302 +    /* Hand off to main application code */
   7.303 +    gCalledAppMainline = TRUE;
   7.304 +    status = SDL_main (gArgc, gArgv);
   7.305 +
   7.306 +    /* We're done, thank you for playing */
   7.307 +    exit(status);
   7.308 +}
   7.309 +@end
   7.310 +
   7.311 +
   7.312 +@implementation NSString (ReplaceSubString)
   7.313 +
   7.314 +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString
   7.315 +{
   7.316 +    unsigned int bufferSize;
   7.317 +    unsigned int selfLen = [self length];
   7.318 +    unsigned int aStringLen = [aString length];
   7.319 +    unichar *buffer;
   7.320 +    NSRange localRange;
   7.321 +    NSString *result;
   7.322 +
   7.323 +    bufferSize = selfLen + aStringLen - aRange.length;
   7.324 +    buffer = (unichar *)NSAllocateMemoryPages(bufferSize*sizeof(unichar));
   7.325 +    
   7.326 +    /* Get first part into buffer */
   7.327 +    localRange.location = 0;
   7.328 +    localRange.length = aRange.location;
   7.329 +    [self getCharacters:buffer range:localRange];
   7.330 +    
   7.331 +    /* Get middle part into buffer */
   7.332 +    localRange.location = 0;
   7.333 +    localRange.length = aStringLen;
   7.334 +    [aString getCharacters:(buffer+aRange.location) range:localRange];
   7.335 +     
   7.336 +    /* Get last part into buffer */
   7.337 +    localRange.location = aRange.location + aRange.length;
   7.338 +    localRange.length = selfLen - localRange.location;
   7.339 +    [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange];
   7.340 +    
   7.341 +    /* Build output string */
   7.342 +    result = [NSString stringWithCharacters:buffer length:bufferSize];
   7.343 +    
   7.344 +    NSDeallocateMemoryPages(buffer, bufferSize);
   7.345 +    
   7.346 +    return result;
   7.347 +}
   7.348 +
   7.349 +@end
   7.350 +
   7.351 +
   7.352 +
   7.353 +#ifdef main
   7.354 +#  undef main
   7.355 +#endif
   7.356 +
   7.357 +
   7.358 +/* Main entry point to executable - should *not* be SDL_main! */
   7.359 +int main (int argc, char **argv)
   7.360 +{
   7.361 +    /* Copy the arguments into a global variable */
   7.362 +    /* This is passed if we are launched by double-clicking */
   7.363 +    if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) {
   7.364 +        gArgv = (char **) SDL_malloc(sizeof (char *) * 2);
   7.365 +        gArgv[0] = argv[0];
   7.366 +        gArgv[1] = NULL;
   7.367 +        gArgc = 1;
   7.368 +        gFinderLaunch = YES;
   7.369 +    } else {
   7.370 +        int i;
   7.371 +        gArgc = argc;
   7.372 +        gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1));
   7.373 +        for (i = 0; i <= argc; i++)
   7.374 +            gArgv[i] = argv[i];
   7.375 +        gFinderLaunch = NO;
   7.376 +    }
   7.377 +
   7.378 +#if SDL_USE_NIB_FILE
   7.379 +    [SDLApplication poseAsClass:[NSApplication class]];
   7.380 +    NSApplicationMain (argc, argv);
   7.381 +#else
   7.382 +    CustomApplicationMain (argc, argv);
   7.383 +#endif
   7.384 +    return 0;
   7.385 +}
   7.386 +
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Application/main.c	Tue Sep 29 07:59:23 2009 +0000
     8.3 @@ -0,0 +1,65 @@
     8.4 +
     8.5 +/* Simple program:  Create a blank window, wait for keypress, quit.
     8.6 +
     8.7 +   Please see the SDL documentation for details on using the SDL API:
     8.8 +   /Developer/Documentation/SDL/docs.html
     8.9 +*/
    8.10 +   
    8.11 +#include <stdio.h>
    8.12 +#include <stdlib.h>
    8.13 +#include <string.h>
    8.14 +#include <math.h>
    8.15 +
    8.16 +#include "SDL.h"
    8.17 +
    8.18 +int main(int argc, char *argv[])
    8.19 +{
    8.20 +	Uint32 initflags = SDL_INIT_VIDEO;  /* See documentation for details */
    8.21 +	SDL_Surface *screen;
    8.22 +	Uint8  video_bpp = 0;
    8.23 +	Uint32 videoflags = SDL_SWSURFACE;
    8.24 +	int    done;
    8.25 +        SDL_Event event;
    8.26 +
    8.27 +	/* Initialize the SDL library */
    8.28 +	if ( SDL_Init(initflags) < 0 ) {
    8.29 +		fprintf(stderr, "Couldn't initialize SDL: %s\n",
    8.30 +			SDL_GetError());
    8.31 +		exit(1);
    8.32 +	}
    8.33 +
    8.34 +	/* Set 640x480 video mode */
    8.35 +	screen=SDL_SetVideoMode(640,480, video_bpp, videoflags);
    8.36 +        if (screen == NULL) {
    8.37 +		fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n",
    8.38 +                        video_bpp, SDL_GetError());
    8.39 +		SDL_Quit();
    8.40 +		exit(2);
    8.41 +	}
    8.42 +
    8.43 +	done = 0;
    8.44 +	while ( !done ) {
    8.45 +
    8.46 +		/* Check for events */
    8.47 +		while ( SDL_PollEvent(&event) ) {
    8.48 +			switch (event.type) {
    8.49 +
    8.50 +				case SDL_MOUSEMOTION:
    8.51 +					break;
    8.52 +				case SDL_MOUSEBUTTONDOWN:
    8.53 +					break;
    8.54 +				case SDL_KEYDOWN:
    8.55 +					/* Any keypress quits the app... */
    8.56 +				case SDL_QUIT:
    8.57 +					done = 1;
    8.58 +					break;
    8.59 +				default:
    8.60 +					break;
    8.61 +			}
    8.62 +		}
    8.63 +	}
    8.64 +	
    8.65 +	/* Clean up the SDL library */
    8.66 +	SDL_Quit();
    8.67 +	return(0);
    8.68 +}
     9.1 Binary file Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/English.lproj/InfoPlist.strings has changed
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/English.lproj/SDLMain.nib/classes.nib	Tue Sep 29 07:59:23 2009 +0000
    10.3 @@ -0,0 +1,19 @@
    10.4 +{
    10.5 +    IBClasses = (
    10.6 +        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
    10.7 +        {
    10.8 +            ACTIONS = {
    10.9 +                help = id; 
   10.10 +                newGame = id; 
   10.11 +                openGame = id; 
   10.12 +                prefsMenu = id; 
   10.13 +                saveGame = id; 
   10.14 +                saveGameAs = id; 
   10.15 +            }; 
   10.16 +            CLASS = SDLMain; 
   10.17 +            LANGUAGE = ObjC; 
   10.18 +            SUPERCLASS = NSObject; 
   10.19 +        }
   10.20 +    ); 
   10.21 +    IBVersion = 1; 
   10.22 +}
   10.23 \ No newline at end of file
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/English.lproj/SDLMain.nib/info.nib	Tue Sep 29 07:59:23 2009 +0000
    11.3 @@ -0,0 +1,21 @@
    11.4 +<?xml version="1.0" encoding="UTF-8"?>
    11.5 +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    11.6 +<plist version="1.0">
    11.7 +<dict>
    11.8 +	<key>IBDocumentLocation</key>
    11.9 +	<string>62 117 356 240 0 0 1152 848 </string>
   11.10 +	<key>IBEditorPositions</key>
   11.11 +	<dict>
   11.12 +		<key>29</key>
   11.13 +		<string>62 362 195 44 0 0 1152 848 </string>
   11.14 +	</dict>
   11.15 +	<key>IBFramework Version</key>
   11.16 +	<string>291.0</string>
   11.17 +	<key>IBOpenObjects</key>
   11.18 +	<array>
   11.19 +		<integer>29</integer>
   11.20 +	</array>
   11.21 +	<key>IBSystem Version</key>
   11.22 +	<string>6L60</string>
   11.23 +</dict>
   11.24 +</plist>
    12.1 Binary file Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/English.lproj/SDLMain.nib/objects.nib has changed
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/Info.plist	Tue Sep 29 07:59:23 2009 +0000
    13.3 @@ -0,0 +1,28 @@
    13.4 +<?xml version="1.0" encoding="UTF-8"?>
    13.5 +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    13.6 +<plist version="1.0">
    13.7 +<dict>
    13.8 +	<key>CFBundleDevelopmentRegion</key>
    13.9 +	<string>English</string>
   13.10 +	<key>CFBundleExecutable</key>
   13.11 +	<string>${EXECUTABLE_NAME}</string>
   13.12 +	<key>CFBundleIconFile</key>
   13.13 +	<string></string>
   13.14 +	<key>CFBundleIdentifier</key>
   13.15 +	<string>com.yourcompany.«PROJECTNAMEASXML»</string>
   13.16 +	<key>CFBundleInfoDictionaryVersion</key>
   13.17 +	<string>6.0</string>
   13.18 +	<key>CFBundleName</key>
   13.19 +	<string>${PRODUCT_NAME}</string>
   13.20 +	<key>CFBundlePackageType</key>
   13.21 +	<string>APPL</string>
   13.22 +	<key>CFBundleSignature</key>
   13.23 +	<string>????</string>
   13.24 +	<key>CFBundleVersion</key>
   13.25 +	<string>1.0</string>
   13.26 +	<key>NSMainNibFile</key>
   13.27 +	<string>SDLMain</string>
   13.28 +	<key>NSPrincipalClass</key>
   13.29 +	<string>NSApplication</string>
   13.30 +</dict>
   13.31 +</plist>
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLApp_Prefix.pch	Tue Sep 29 07:59:23 2009 +0000
    14.3 @@ -0,0 +1,9 @@
    14.4 +//
    14.5 +// Prefix header for all source files of the 'PROJECTNAME' target in the 'PROJECTNAME' project
    14.6 +//
    14.7 +
    14.8 +#include "SDL.h"
    14.9 +
   14.10 +#ifdef __OBJC__
   14.11 +    #import <Cocoa/Cocoa.h>
   14.12 +#endif
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLCocoaApp.xcodeproj/TemplateInfo.plist	Tue Sep 29 07:59:23 2009 +0000
    15.3 @@ -0,0 +1,12 @@
    15.4 +{
    15.5 +	FilesToRename = {
    15.6 +		"SDLApp_Prefix.pch" = "PROJECTNAME_Prefix.pch";
    15.7 +	};
    15.8 +	FilesToMacroExpand = (
    15.9 +		"PROJECTNAME_Prefix.pch",
   15.10 +		"Info.plist",
   15.11 +		"English.lproj/InfoPlist.strings",
   15.12 +		"main.c",
   15.13 +	);
   15.14 +	Description = "This project builds an SDL-based application with Cocoa menus.";
   15.15 +}
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLCocoaApp.xcodeproj/project.pbxproj	Tue Sep 29 07:59:23 2009 +0000
    16.3 @@ -0,0 +1,309 @@
    16.4 +// !$*UTF8*$!
    16.5 +{
    16.6 +	archiveVersion = 1;
    16.7 +	classes = {
    16.8 +	};
    16.9 +	objectVersion = 42;
   16.10 +	objects = {
   16.11 +
   16.12 +/* Begin PBXBuildFile section */
   16.13 +		002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; };
   16.14 +		002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; };
   16.15 +		002F3A3F09D088BA00EBEB88 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F3A3E09D088BA00EBEB88 /* main.c */; };
   16.16 +		002F3AF109D08F1000EBEB88 /* SDLMain.nib in Resources */ = {isa = PBXBuildFile; fileRef = 002F3AEF09D08F1000EBEB88 /* SDLMain.nib */; };
   16.17 +		8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
   16.18 +		8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
   16.19 +/* End PBXBuildFile section */
   16.20 +
   16.21 +/* Begin PBXCopyFilesBuildPhase section */
   16.22 +		002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */ = {
   16.23 +			isa = PBXCopyFilesBuildPhase;
   16.24 +			buildActionMask = 2147483647;
   16.25 +			dstPath = "";
   16.26 +			dstSubfolderSpec = 10;
   16.27 +			files = (
   16.28 +				002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */,
   16.29 +			);
   16.30 +			name = "Copy Frameworks into .app bundle";
   16.31 +			runOnlyForDeploymentPostprocessing = 0;
   16.32 +		};
   16.33 +/* End PBXCopyFilesBuildPhase section */
   16.34 +
   16.35 +/* Begin PBXFileReference section */
   16.36 +		002F39F909D0881F00EBEB88 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.framework; sourceTree = "<absolute>"; };
   16.37 +		002F3A3E09D088BA00EBEB88 /* main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = SOURCE_ROOT; };
   16.38 +		002F3AF009D08F1000EBEB88 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/SDLMain.nib; sourceTree = "<group>"; };
   16.39 +		089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
   16.40 +		1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
   16.41 +		29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
   16.42 +		29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
   16.43 +		32CA4F630368D1EE00C91783 /* «PROJECTNAME»_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "«PROJECTNAME»_Prefix.pch"; sourceTree = "<group>"; };
   16.44 +		8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
   16.45 +		8D1107320486CEB800E47090 /* «PROJECTNAME».app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "«PROJECTNAME».app"; sourceTree = BUILT_PRODUCTS_DIR; };
   16.46 +/* End PBXFileReference section */
   16.47 +
   16.48 +/* Begin PBXFrameworksBuildPhase section */
   16.49 +		8D11072E0486CEB800E47090 /* Frameworks */ = {
   16.50 +			isa = PBXFrameworksBuildPhase;
   16.51 +			buildActionMask = 2147483647;
   16.52 +			files = (
   16.53 +				002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */,
   16.54 +				8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
   16.55 +			);
   16.56 +			runOnlyForDeploymentPostprocessing = 0;
   16.57 +		};
   16.58 +/* End PBXFrameworksBuildPhase section */
   16.59 +
   16.60 +/* Begin PBXGroup section */
   16.61 +		080E96DDFE201D6D7F000001 /* Classes */ = {
   16.62 +			isa = PBXGroup;
   16.63 +			children = (
   16.64 +			);
   16.65 +			name = Classes;
   16.66 +			sourceTree = "<group>";
   16.67 +		};
   16.68 +		1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
   16.69 +			isa = PBXGroup;
   16.70 +			children = (
   16.71 +				002F39F909D0881F00EBEB88 /* SDL.framework */,
   16.72 +				1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
   16.73 +			);
   16.74 +			name = "Linked Frameworks";
   16.75 +			sourceTree = "<group>";
   16.76 +		};
   16.77 +		1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
   16.78 +			isa = PBXGroup;
   16.79 +			children = (
   16.80 +				29B97324FDCFA39411CA2CEA /* AppKit.framework */,
   16.81 +				29B97325FDCFA39411CA2CEA /* Foundation.framework */,
   16.82 +			);
   16.83 +			name = "Other Frameworks";
   16.84 +			sourceTree = "<group>";
   16.85 +		};
   16.86 +		19C28FACFE9D520D11CA2CBB /* Products */ = {
   16.87 +			isa = PBXGroup;
   16.88 +			children = (
   16.89 +				8D1107320486CEB800E47090 /* «PROJECTNAME».app */,
   16.90 +			);
   16.91 +			name = Products;
   16.92 +			sourceTree = "<group>";
   16.93 +		};
   16.94 +		29B97314FDCFA39411CA2CEA /* «PROJECTNAMEASXML» */ = {
   16.95 +			isa = PBXGroup;
   16.96 +			children = (
   16.97 +				080E96DDFE201D6D7F000001 /* Classes */,
   16.98 +				29B97315FDCFA39411CA2CEA /* Other Sources */,
   16.99 +				29B97317FDCFA39411CA2CEA /* Resources */,
  16.100 +				29B97323FDCFA39411CA2CEA /* Frameworks */,
  16.101 +				19C28FACFE9D520D11CA2CBB /* Products */,
  16.102 +			);
  16.103 +			name = "«PROJECTNAMEASXML»";
  16.104 +			sourceTree = "<group>";
  16.105 +		};
  16.106 +		29B97315FDCFA39411CA2CEA /* Other Sources */ = {
  16.107 +			isa = PBXGroup;
  16.108 +			children = (
  16.109 +				32CA4F630368D1EE00C91783 /* «PROJECTNAME»_Prefix.pch */,
  16.110 +				002F3A3E09D088BA00EBEB88 /* main.c */,
  16.111 +			);
  16.112 +			name = "Other Sources";
  16.113 +			sourceTree = "<group>";
  16.114 +		};
  16.115 +		29B97317FDCFA39411CA2CEA /* Resources */ = {
  16.116 +			isa = PBXGroup;
  16.117 +			children = (
  16.118 +				8D1107310486CEB800E47090 /* Info.plist */,
  16.119 +				089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
  16.120 +				002F3AEF09D08F1000EBEB88 /* SDLMain.nib */,
  16.121 +			);
  16.122 +			name = Resources;
  16.123 +			sourceTree = "<group>";
  16.124 +		};
  16.125 +		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
  16.126 +			isa = PBXGroup;
  16.127 +			children = (
  16.128 +				1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
  16.129 +				1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
  16.130 +			);
  16.131 +			name = Frameworks;
  16.132 +			sourceTree = "<group>";
  16.133 +		};
  16.134 +/* End PBXGroup section */
  16.135 +
  16.136 +/* Begin PBXNativeTarget section */
  16.137 +		8D1107260486CEB800E47090 /* «PROJECTNAME» */ = {
  16.138 +			isa = PBXNativeTarget;
  16.139 +			buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */;
  16.140 +			buildPhases = (
  16.141 +				8D1107290486CEB800E47090 /* Resources */,
  16.142 +				8D11072C0486CEB800E47090 /* Sources */,
  16.143 +				8D11072E0486CEB800E47090 /* Frameworks */,
  16.144 +				002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */,
  16.145 +			);
  16.146 +			buildRules = (
  16.147 +			);
  16.148 +			dependencies = (
  16.149 +			);
  16.150 +			name = "«PROJECTNAME»";
  16.151 +			productInstallPath = "$(HOME)/Applications";
  16.152 +			productName = "«PROJECTNAME»";
  16.153 +			productReference = 8D1107320486CEB800E47090 /* «PROJECTNAME».app */;
  16.154 +			productType = "com.apple.product-type.application";
  16.155 +		};
  16.156 +/* End PBXNativeTarget section */
  16.157 +
  16.158 +/* Begin PBXProject section */
  16.159 +		29B97313FDCFA39411CA2CEA /* Project object */ = {
  16.160 +			isa = PBXProject;
  16.161 +			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SDLCocoaApp" */;
  16.162 +			compatibilityVersion = "Xcode 2.4";
  16.163 +			hasScannedForEncodings = 1;
  16.164 +			mainGroup = 29B97314FDCFA39411CA2CEA /* «PROJECTNAMEASXML» */;
  16.165 +			projectDirPath = "";
  16.166 +			projectRoot = "";
  16.167 +			targets = (
  16.168 +				8D1107260486CEB800E47090 /* «PROJECTNAME» */,
  16.169 +			);
  16.170 +		};
  16.171 +/* End PBXProject section */
  16.172 +
  16.173 +/* Begin PBXResourcesBuildPhase section */
  16.174 +		8D1107290486CEB800E47090 /* Resources */ = {
  16.175 +			isa = PBXResourcesBuildPhase;
  16.176 +			buildActionMask = 2147483647;
  16.177 +			files = (
  16.178 +				8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
  16.179 +				002F3AF109D08F1000EBEB88 /* SDLMain.nib in Resources */,
  16.180 +			);
  16.181 +			runOnlyForDeploymentPostprocessing = 0;
  16.182 +		};
  16.183 +/* End PBXResourcesBuildPhase section */
  16.184 +
  16.185 +/* Begin PBXSourcesBuildPhase section */
  16.186 +		8D11072C0486CEB800E47090 /* Sources */ = {
  16.187 +			isa = PBXSourcesBuildPhase;
  16.188 +			buildActionMask = 2147483647;
  16.189 +			files = (
  16.190 +				002F3A3F09D088BA00EBEB88 /* main.c in Sources */,
  16.191 +			);
  16.192 +			runOnlyForDeploymentPostprocessing = 0;
  16.193 +		};
  16.194 +/* End PBXSourcesBuildPhase section */
  16.195 +
  16.196 +/* Begin PBXVariantGroup section */
  16.197 +		002F3AEF09D08F1000EBEB88 /* SDLMain.nib */ = {
  16.198 +			isa = PBXVariantGroup;
  16.199 +			children = (
  16.200 +				002F3AF009D08F1000EBEB88 /* English */,
  16.201 +			);
  16.202 +			name = SDLMain.nib;
  16.203 +			sourceTree = "<group>";
  16.204 +		};
  16.205 +		089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
  16.206 +			isa = PBXVariantGroup;
  16.207 +			children = (
  16.208 +				089C165DFE840E0CC02AAC07 /* English */,
  16.209 +			);
  16.210 +			name = InfoPlist.strings;
  16.211 +			sourceTree = "<group>";
  16.212 +		};
  16.213 +/* End PBXVariantGroup section */
  16.214 +
  16.215 +/* Begin XCBuildConfiguration section */
  16.216 +		C01FCF4B08A954540054247B /* Debug */ = {
  16.217 +			isa = XCBuildConfiguration;
  16.218 +			buildSettings = {
  16.219 +				COPY_PHASE_STRIP = NO;
  16.220 +				GCC_DYNAMIC_NO_PIC = NO;
  16.221 +				GCC_ENABLE_FIX_AND_CONTINUE = YES;
  16.222 +				GCC_MODEL_TUNING = G5;
  16.223 +				GCC_OPTIMIZATION_LEVEL = 0;
  16.224 +				INFOPLIST_FILE = Info.plist;
  16.225 +				INSTALL_PATH = "$(HOME)/Applications";
  16.226 +				PRODUCT_NAME = "«PROJECTNAME»";
  16.227 +				WRAPPER_EXTENSION = app;
  16.228 +				ZERO_LINK = YES;
  16.229 +			};
  16.230 +			name = Debug;
  16.231 +		};
  16.232 +		C01FCF4C08A954540054247B /* Release */ = {
  16.233 +			isa = XCBuildConfiguration;
  16.234 +			buildSettings = {
  16.235 +				ARCHS = (
  16.236 +					ppc,
  16.237 +					i386,
  16.238 +				);
  16.239 +				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
  16.240 +				GCC_MODEL_TUNING = G5;
  16.241 +				INFOPLIST_FILE = Info.plist;
  16.242 +				INSTALL_PATH = "$(HOME)/Applications";
  16.243 +				PRODUCT_NAME = "«PROJECTNAME»";
  16.244 +				WRAPPER_EXTENSION = app;
  16.245 +			};
  16.246 +			name = Release;
  16.247 +		};
  16.248 +		C01FCF4F08A954540054247B /* Debug */ = {
  16.249 +			isa = XCBuildConfiguration;
  16.250 +			buildSettings = {
  16.251 +				FRAMEWORK_SEARCH_PATHS = (
  16.252 +					"$(HOME)/Library/Frameworks",
  16.253 +					/Library/Frameworks,
  16.254 +					"$(FRAMEWORK_SEARCH_PATHS)",
  16.255 +				);
  16.256 +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
  16.257 +				GCC_WARN_UNUSED_VARIABLE = YES;
  16.258 +				HEADER_SEARCH_PATHS = (
  16.259 +					"$(HOME)/Library/Frameworks/SDL.framework/Headers",
  16.260 +					/Library/Frameworks/SDL.framework/Headers,
  16.261 +					"$(HEADER_SEARCH_PATHS)",
  16.262 +				);
  16.263 +				PREBINDING = NO;
  16.264 +				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
  16.265 +			};
  16.266 +			name = Debug;
  16.267 +		};
  16.268 +		C01FCF5008A954540054247B /* Release */ = {
  16.269 +			isa = XCBuildConfiguration;
  16.270 +			buildSettings = {
  16.271 +				FRAMEWORK_SEARCH_PATHS = (
  16.272 +					"$(HOME)/Library/Frameworks",
  16.273 +					/Library/Frameworks,
  16.274 +					"$(FRAMEWORK_SEARCH_PATHS)",
  16.275 +				);
  16.276 +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
  16.277 +				GCC_WARN_UNUSED_VARIABLE = YES;
  16.278 +				HEADER_SEARCH_PATHS = (
  16.279 +					"$(HOME)/Library/Frameworks/SDL.framework/Headers",
  16.280 +					/Library/Frameworks/SDL.framework/Headers,
  16.281 +					"$(HEADER_SEARCH_PATHS)",
  16.282 +				);
  16.283 +				PREBINDING = NO;
  16.284 +				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
  16.285 +			};
  16.286 +			name = Release;
  16.287 +		};
  16.288 +/* End XCBuildConfiguration section */
  16.289 +
  16.290 +/* Begin XCConfigurationList section */
  16.291 +		C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */ = {
  16.292 +			isa = XCConfigurationList;
  16.293 +			buildConfigurations = (
  16.294 +				C01FCF4B08A954540054247B /* Debug */,
  16.295 +				C01FCF4C08A954540054247B /* Release */,
  16.296 +			);
  16.297 +			defaultConfigurationIsVisible = 0;
  16.298 +			defaultConfigurationName = Release;
  16.299 +		};
  16.300 +		C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SDLCocoaApp" */ = {
  16.301 +			isa = XCConfigurationList;
  16.302 +			buildConfigurations = (
  16.303 +				C01FCF4F08A954540054247B /* Debug */,
  16.304 +				C01FCF5008A954540054247B /* Release */,
  16.305 +			);
  16.306 +			defaultConfigurationIsVisible = 0;
  16.307 +			defaultConfigurationName = Release;
  16.308 +		};
  16.309 +/* End XCConfigurationList section */
  16.310 +	};
  16.311 +	rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
  16.312 +}
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLMain.h	Tue Sep 29 07:59:23 2009 +0000
    17.3 @@ -0,0 +1,16 @@
    17.4 +/*   SDLMain.m - main entry point for our Cocoa-ized SDL app
    17.5 +       Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
    17.6 +       Non-NIB-Code & other changes: Max Horn <max@quendi.de>
    17.7 +
    17.8 +    Feel free to customize this file to suit your needs
    17.9 +*/
   17.10 +
   17.11 +#ifndef _SDLMain_h_
   17.12 +#define _SDLMain_h_
   17.13 +
   17.14 +#import <Cocoa/Cocoa.h>
   17.15 +
   17.16 +@interface SDLMain : NSObject
   17.17 +@end
   17.18 +
   17.19 +#endif /* _SDLMain_h_ */
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/SDLMain.m	Tue Sep 29 07:59:23 2009 +0000
    18.3 @@ -0,0 +1,383 @@
    18.4 +/*   SDLMain.m - main entry point for our Cocoa-ized SDL app
    18.5 +       Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
    18.6 +       Non-NIB-Code & other changes: Max Horn <max@quendi.de>
    18.7 +
    18.8 +    Feel free to customize this file to suit your needs
    18.9 +*/
   18.10 +
   18.11 +#include "SDL.h"
   18.12 +#include "SDLMain.h"
   18.13 +#include <sys/param.h> /* for MAXPATHLEN */
   18.14 +#include <unistd.h>
   18.15 +
   18.16 +/* For some reaon, Apple removed setAppleMenu from the headers in 10.4,
   18.17 + but the method still is there and works. To avoid warnings, we declare
   18.18 + it ourselves here. */
   18.19 +@interface NSApplication(SDL_Missing_Methods)
   18.20 +- (void)setAppleMenu:(NSMenu *)menu;
   18.21 +@end
   18.22 +
   18.23 +/* Use this flag to determine whether we use SDLMain.nib or not */
   18.24 +#define		SDL_USE_NIB_FILE	0
   18.25 +
   18.26 +/* Use this flag to determine whether we use CPS (docking) or not */
   18.27 +#define		SDL_USE_CPS		1
   18.28 +#ifdef SDL_USE_CPS
   18.29 +/* Portions of CPS.h */
   18.30 +typedef struct CPSProcessSerNum
   18.31 +{
   18.32 +	UInt32		lo;
   18.33 +	UInt32		hi;
   18.34 +} CPSProcessSerNum;
   18.35 +
   18.36 +extern OSErr	CPSGetCurrentProcess( CPSProcessSerNum *psn);
   18.37 +extern OSErr 	CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5);
   18.38 +extern OSErr	CPSSetFrontProcess( CPSProcessSerNum *psn);
   18.39 +
   18.40 +#endif /* SDL_USE_CPS */
   18.41 +
   18.42 +static int    gArgc;
   18.43 +static char  **gArgv;
   18.44 +static BOOL   gFinderLaunch;
   18.45 +static BOOL   gCalledAppMainline = FALSE;
   18.46 +
   18.47 +static NSString *getApplicationName(void)
   18.48 +{
   18.49 +    const NSDictionary *dict;
   18.50 +    NSString *appName = 0;
   18.51 +
   18.52 +    /* Determine the application name */
   18.53 +    dict = (const NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle());
   18.54 +    if (dict)
   18.55 +        appName = [dict objectForKey: @"CFBundleName"];
   18.56 +    
   18.57 +    if (![appName length])
   18.58 +        appName = [[NSProcessInfo processInfo] processName];
   18.59 +
   18.60 +    return appName;
   18.61 +}
   18.62 +
   18.63 +#if SDL_USE_NIB_FILE
   18.64 +/* A helper category for NSString */
   18.65 +@interface NSString (ReplaceSubString)
   18.66 +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString;
   18.67 +@end
   18.68 +#endif
   18.69 +
   18.70 +@interface SDLApplication : NSApplication
   18.71 +@end
   18.72 +
   18.73 +@implementation SDLApplication
   18.74 +/* Invoked from the Quit menu item */
   18.75 +- (void)terminate:(id)sender
   18.76 +{
   18.77 +    /* Post a SDL_QUIT event */
   18.78 +    SDL_Event event;
   18.79 +    event.type = SDL_QUIT;
   18.80 +    SDL_PushEvent(&event);
   18.81 +}
   18.82 +@end
   18.83 +
   18.84 +/* The main class of the application, the application's delegate */
   18.85 +@implementation SDLMain
   18.86 +
   18.87 +/* Set the working directory to the .app's parent directory */
   18.88 +- (void) setupWorkingDirectory:(BOOL)shouldChdir
   18.89 +{
   18.90 +    if (shouldChdir)
   18.91 +    {
   18.92 +        char parentdir[MAXPATHLEN];
   18.93 +        CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle());
   18.94 +        CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url);
   18.95 +        if (CFURLGetFileSystemRepresentation(url2, 1, (UInt8 *)parentdir, MAXPATHLEN)) {
   18.96 +            chdir(parentdir);   /* chdir to the binary app's parent */
   18.97 +        }
   18.98 +        CFRelease(url);
   18.99 +        CFRelease(url2);
  18.100 +    }
  18.101 +}
  18.102 +
  18.103 +#if SDL_USE_NIB_FILE
  18.104 +
  18.105 +/* Fix menu to contain the real app name instead of "SDL App" */
  18.106 +- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName
  18.107 +{
  18.108 +    NSRange aRange;
  18.109 +    NSEnumerator *enumerator;
  18.110 +    NSMenuItem *menuItem;
  18.111 +
  18.112 +    aRange = [[aMenu title] rangeOfString:@"SDL App"];
  18.113 +    if (aRange.length != 0)
  18.114 +        [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]];
  18.115 +
  18.116 +    enumerator = [[aMenu itemArray] objectEnumerator];
  18.117 +    while ((menuItem = [enumerator nextObject]))
  18.118 +    {
  18.119 +        aRange = [[menuItem title] rangeOfString:@"SDL App"];
  18.120 +        if (aRange.length != 0)
  18.121 +            [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]];
  18.122 +        if ([menuItem hasSubmenu])
  18.123 +            [self fixMenu:[menuItem submenu] withAppName:appName];
  18.124 +    }
  18.125 +    [ aMenu sizeToFit ];
  18.126 +}
  18.127 +
  18.128 +#else
  18.129 +
  18.130 +static void setApplicationMenu(void)
  18.131 +{
  18.132 +    /* warning: this code is very odd */
  18.133 +    NSMenu *appleMenu;
  18.134 +    NSMenuItem *menuItem;
  18.135 +    NSString *title;
  18.136 +    NSString *appName;
  18.137 +    
  18.138 +    appName = getApplicationName();
  18.139 +    appleMenu = [[NSMenu alloc] initWithTitle:@""];
  18.140 +    
  18.141 +    /* Add menu items */
  18.142 +    title = [@"About " stringByAppendingString:appName];
  18.143 +    [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];
  18.144 +
  18.145 +    [appleMenu addItem:[NSMenuItem separatorItem]];
  18.146 +
  18.147 +    title = [@"Hide " stringByAppendingString:appName];
  18.148 +    [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"];
  18.149 +
  18.150 +    menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
  18.151 +    [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)];
  18.152 +
  18.153 +    [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""];
  18.154 +
  18.155 +    [appleMenu addItem:[NSMenuItem separatorItem]];
  18.156 +
  18.157 +    title = [@"Quit " stringByAppendingString:appName];
  18.158 +    [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"];
  18.159 +
  18.160 +    
  18.161 +    /* Put menu into the menubar */
  18.162 +    menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
  18.163 +    [menuItem setSubmenu:appleMenu];
  18.164 +    [[NSApp mainMenu] addItem:menuItem];
  18.165 +
  18.166 +    /* Tell the application object that this is now the application menu */
  18.167 +    [NSApp setAppleMenu:appleMenu];
  18.168 +
  18.169 +    /* Finally give up our references to the objects */
  18.170 +    [appleMenu release];
  18.171 +    [menuItem release];
  18.172 +}
  18.173 +
  18.174 +/* Create a window menu */
  18.175 +static void setupWindowMenu(void)
  18.176 +{
  18.177 +    NSMenu      *windowMenu;
  18.178 +    NSMenuItem  *windowMenuItem;
  18.179 +    NSMenuItem  *menuItem;
  18.180 +
  18.181 +    windowMenu = [[NSMenu alloc] initWithTitle:@"Window"];
  18.182 +    
  18.183 +    /* "Minimize" item */
  18.184 +    menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"];
  18.185 +    [windowMenu addItem:menuItem];
  18.186 +    [menuItem release];
  18.187 +    
  18.188 +    /* Put menu into the menubar */
  18.189 +    windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""];
  18.190 +    [windowMenuItem setSubmenu:windowMenu];
  18.191 +    [[NSApp mainMenu] addItem:windowMenuItem];
  18.192 +    
  18.193 +    /* Tell the application object that this is now the window menu */
  18.194 +    [NSApp setWindowsMenu:windowMenu];
  18.195 +
  18.196 +    /* Finally give up our references to the objects */
  18.197 +    [windowMenu release];
  18.198 +    [windowMenuItem release];
  18.199 +}
  18.200 +
  18.201 +/* Replacement for NSApplicationMain */
  18.202 +static void CustomApplicationMain (int argc, char **argv)
  18.203 +{
  18.204 +    NSAutoreleasePool	*pool = [[NSAutoreleasePool alloc] init];
  18.205 +    SDLMain				*sdlMain;
  18.206 +
  18.207 +    /* Ensure the application object is initialised */
  18.208 +    [SDLApplication sharedApplication];
  18.209 +    
  18.210 +#ifdef SDL_USE_CPS
  18.211 +    {
  18.212 +        CPSProcessSerNum PSN;
  18.213 +        /* Tell the dock about us */
  18.214 +        if (!CPSGetCurrentProcess(&PSN))
  18.215 +            if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103))
  18.216 +                if (!CPSSetFrontProcess(&PSN))
  18.217 +                    [SDLApplication sharedApplication];
  18.218 +    }
  18.219 +#endif /* SDL_USE_CPS */
  18.220 +
  18.221 +    /* Set up the menubar */
  18.222 +    [NSApp setMainMenu:[[NSMenu alloc] init]];
  18.223 +    setApplicationMenu();
  18.224 +    setupWindowMenu();
  18.225 +
  18.226 +    /* Create SDLMain and make it the app delegate */
  18.227 +    sdlMain = [[SDLMain alloc] init];
  18.228 +    [NSApp setDelegate:sdlMain];
  18.229 +    
  18.230 +    /* Start the main event loop */
  18.231 +    [NSApp run];
  18.232 +    
  18.233 +    [sdlMain release];
  18.234 +    [pool release];
  18.235 +}
  18.236 +
  18.237 +#endif
  18.238 +
  18.239 +
  18.240 +/*
  18.241 + * Catch document open requests...this lets us notice files when the app
  18.242 + *  was launched by double-clicking a document, or when a document was
  18.243 + *  dragged/dropped on the app's icon. You need to have a
  18.244 + *  CFBundleDocumentsType section in your Info.plist to get this message,
  18.245 + *  apparently.
  18.246 + *
  18.247 + * Files are added to gArgv, so to the app, they'll look like command line
  18.248 + *  arguments. Previously, apps launched from the finder had nothing but
  18.249 + *  an argv[0].
  18.250 + *
  18.251 + * This message may be received multiple times to open several docs on launch.
  18.252 + *
  18.253 + * This message is ignored once the app's mainline has been called.
  18.254 + */
  18.255 +- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
  18.256 +{
  18.257 +    const char *temparg;
  18.258 +    size_t arglen;
  18.259 +    char *arg;
  18.260 +    char **newargv;
  18.261 +
  18.262 +    if (!gFinderLaunch)  /* MacOS is passing command line args. */
  18.263 +        return FALSE;
  18.264 +
  18.265 +    if (gCalledAppMainline)  /* app has started, ignore this document. */
  18.266 +        return FALSE;
  18.267 +
  18.268 +    temparg = [filename UTF8String];
  18.269 +    arglen = SDL_strlen(temparg) + 1;
  18.270 +    arg = (char *) SDL_malloc(arglen);
  18.271 +    if (arg == NULL)
  18.272 +        return FALSE;
  18.273 +
  18.274 +    newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2));
  18.275 +    if (newargv == NULL)
  18.276 +    {
  18.277 +        SDL_free(arg);
  18.278 +        return FALSE;
  18.279 +    }
  18.280 +    gArgv = newargv;
  18.281 +
  18.282 +    SDL_strlcpy(arg, temparg, arglen);
  18.283 +    gArgv[gArgc++] = arg;
  18.284 +    gArgv[gArgc] = NULL;
  18.285 +    return TRUE;
  18.286 +}
  18.287 +
  18.288 +
  18.289 +/* Called when the internal event loop has just started running */
  18.290 +- (void) applicationDidFinishLaunching: (NSNotification *) note
  18.291 +{
  18.292 +    int status;
  18.293 +
  18.294 +    /* Set the working directory to the .app's parent directory */
  18.295 +    [self setupWorkingDirectory:gFinderLaunch];
  18.296 +
  18.297 +#if SDL_USE_NIB_FILE
  18.298 +    /* Set the main menu to contain the real app name instead of "SDL App" */
  18.299 +    [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()];
  18.300 +#endif
  18.301 +
  18.302 +    /* Hand off to main application code */
  18.303 +    gCalledAppMainline = TRUE;
  18.304 +    status = SDL_main (gArgc, gArgv);
  18.305 +
  18.306 +    /* We're done, thank you for playing */
  18.307 +    exit(status);
  18.308 +}
  18.309 +@end
  18.310 +
  18.311 +
  18.312 +@implementation NSString (ReplaceSubString)
  18.313 +
  18.314 +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString
  18.315 +{
  18.316 +    unsigned int bufferSize;
  18.317 +    unsigned int selfLen = [self length];
  18.318 +    unsigned int aStringLen = [aString length];
  18.319 +    unichar *buffer;
  18.320 +    NSRange localRange;
  18.321 +    NSString *result;
  18.322 +
  18.323 +    bufferSize = selfLen + aStringLen - aRange.length;
  18.324 +    buffer = (unichar *)NSAllocateMemoryPages(bufferSize*sizeof(unichar));
  18.325 +    
  18.326 +    /* Get first part into buffer */
  18.327 +    localRange.location = 0;
  18.328 +    localRange.length = aRange.location;
  18.329 +    [self getCharacters:buffer range:localRange];
  18.330 +    
  18.331 +    /* Get middle part into buffer */
  18.332 +    localRange.location = 0;
  18.333 +    localRange.length = aStringLen;
  18.334 +    [aString getCharacters:(buffer+aRange.location) range:localRange];
  18.335 +     
  18.336 +    /* Get last part into buffer */
  18.337 +    localRange.location = aRange.location + aRange.length;
  18.338 +    localRange.length = selfLen - localRange.location;
  18.339 +    [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange];
  18.340 +    
  18.341 +    /* Build output string */
  18.342 +    result = [NSString stringWithCharacters:buffer length:bufferSize];
  18.343 +    
  18.344 +    NSDeallocateMemoryPages(buffer, bufferSize);
  18.345 +    
  18.346 +    return result;
  18.347 +}
  18.348 +
  18.349 +@end
  18.350 +
  18.351 +
  18.352 +
  18.353 +#ifdef main
  18.354 +#  undef main
  18.355 +#endif
  18.356 +
  18.357 +
  18.358 +/* Main entry point to executable - should *not* be SDL_main! */
  18.359 +int main (int argc, char **argv)
  18.360 +{
  18.361 +    /* Copy the arguments into a global variable */
  18.362 +    /* This is passed if we are launched by double-clicking */
  18.363 +    if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) {
  18.364 +        gArgv = (char **) SDL_malloc(sizeof (char *) * 2);
  18.365 +        gArgv[0] = argv[0];
  18.366 +        gArgv[1] = NULL;
  18.367 +        gArgc = 1;
  18.368 +        gFinderLaunch = YES;
  18.369 +    } else {
  18.370 +        int i;
  18.371 +        gArgc = argc;
  18.372 +        gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1));
  18.373 +        for (i = 0; i <= argc; i++)
  18.374 +            gArgv[i] = argv[i];
  18.375 +        gFinderLaunch = NO;
  18.376 +    }
  18.377 +
  18.378 +#if SDL_USE_NIB_FILE
  18.379 +    [SDLApplication poseAsClass:[NSApplication class]];
  18.380 +    NSApplicationMain (argc, argv);
  18.381 +#else
  18.382 +    CustomApplicationMain (argc, argv);
  18.383 +#endif
  18.384 +    return 0;
  18.385 +}
  18.386 +
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL Cocoa Application/main.c	Tue Sep 29 07:59:23 2009 +0000
    19.3 @@ -0,0 +1,65 @@
    19.4 +
    19.5 +/* Simple program:  Create a blank window, wait for keypress, quit.
    19.6 +
    19.7 +   Please see the SDL documentation for details on using the SDL API:
    19.8 +   /Developer/Documentation/SDL/docs.html
    19.9 +*/
   19.10 +   
   19.11 +#include <stdio.h>
   19.12 +#include <stdlib.h>
   19.13 +#include <string.h>
   19.14 +#include <math.h>
   19.15 +
   19.16 +#include "SDL.h"
   19.17 +
   19.18 +int main(int argc, char *argv[])
   19.19 +{
   19.20 +	Uint32 initflags = SDL_INIT_VIDEO;  /* See documentation for details */
   19.21 +	SDL_Surface *screen;
   19.22 +	Uint8  video_bpp = 0;
   19.23 +	Uint32 videoflags = SDL_SWSURFACE;
   19.24 +	int    done;
   19.25 +        SDL_Event event;
   19.26 +
   19.27 +	/* Initialize the SDL library */
   19.28 +	if ( SDL_Init(initflags) < 0 ) {
   19.29 +		fprintf(stderr, "Couldn't initialize SDL: %s\n",
   19.30 +			SDL_GetError());
   19.31 +		exit(1);
   19.32 +	}
   19.33 +
   19.34 +	/* Set 640x480 video mode */
   19.35 +	screen=SDL_SetVideoMode(640,480, video_bpp, videoflags);
   19.36 +        if (screen == NULL) {
   19.37 +		fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n",
   19.38 +                        video_bpp, SDL_GetError());
   19.39 +		SDL_Quit();
   19.40 +		exit(2);
   19.41 +	}
   19.42 +
   19.43 +	done = 0;
   19.44 +	while ( !done ) {
   19.45 +
   19.46 +		/* Check for events */
   19.47 +		while ( SDL_PollEvent(&event) ) {
   19.48 +			switch (event.type) {
   19.49 +
   19.50 +				case SDL_MOUSEMOTION:
   19.51 +					break;
   19.52 +				case SDL_MOUSEBUTTONDOWN:
   19.53 +					break;
   19.54 +				case SDL_KEYDOWN:
   19.55 +					/* Any keypress quits the app... */
   19.56 +				case SDL_QUIT:
   19.57 +					done = 1;
   19.58 +					break;
   19.59 +				default:
   19.60 +					break;
   19.61 +			}
   19.62 +		}
   19.63 +	}
   19.64 +	
   19.65 +	/* Clean up the SDL library */
   19.66 +	SDL_Quit();
   19.67 +	return(0);
   19.68 +}
    20.1 Binary file Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/English.lproj/InfoPlist.strings has changed
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/Info.plist	Tue Sep 29 07:59:23 2009 +0000
    21.3 @@ -0,0 +1,28 @@
    21.4 +<?xml version="1.0" encoding="UTF-8"?>
    21.5 +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    21.6 +<plist version="1.0">
    21.7 +<dict>
    21.8 +	<key>CFBundleDevelopmentRegion</key>
    21.9 +	<string>English</string>
   21.10 +	<key>CFBundleExecutable</key>
   21.11 +	<string>${EXECUTABLE_NAME}</string>
   21.12 +	<key>CFBundleIconFile</key>
   21.13 +	<string></string>
   21.14 +	<key>CFBundleIdentifier</key>
   21.15 +	<string>com.yourcompany.«PROJECTNAMEASXML»</string>
   21.16 +	<key>CFBundleInfoDictionaryVersion</key>
   21.17 +	<string>6.0</string>
   21.18 +	<key>CFBundleName</key>
   21.19 +	<string>${PRODUCT_NAME}</string>
   21.20 +	<key>CFBundlePackageType</key>
   21.21 +	<string>APPL</string>
   21.22 +	<key>CFBundleSignature</key>
   21.23 +	<string>????</string>
   21.24 +	<key>CFBundleVersion</key>
   21.25 +	<string>1.0</string>
   21.26 +	<key>NSMainNibFile</key>
   21.27 +	<string>SDLMain</string>
   21.28 +	<key>NSPrincipalClass</key>
   21.29 +	<string>NSApplication</string>
   21.30 +</dict>
   21.31 +</plist>
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLApp_Prefix.pch	Tue Sep 29 07:59:23 2009 +0000
    22.3 @@ -0,0 +1,9 @@
    22.4 +//
    22.5 +// Prefix header for all source files of the 'PROJECTNAME' target in the 'PROJECTNAME' project
    22.6 +//
    22.7 +
    22.8 +#include "SDL.h"
    22.9 +
   22.10 +#ifdef __OBJC__
   22.11 +    #import <Cocoa/Cocoa.h>
   22.12 +#endif
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLMain.h	Tue Sep 29 07:59:23 2009 +0000
    23.3 @@ -0,0 +1,16 @@
    23.4 +/*   SDLMain.m - main entry point for our Cocoa-ized SDL app
    23.5 +       Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
    23.6 +       Non-NIB-Code & other changes: Max Horn <max@quendi.de>
    23.7 +
    23.8 +    Feel free to customize this file to suit your needs
    23.9 +*/
   23.10 +
   23.11 +#ifndef _SDLMain_h_
   23.12 +#define _SDLMain_h_
   23.13 +
   23.14 +#import <Cocoa/Cocoa.h>
   23.15 +
   23.16 +@interface SDLMain : NSObject
   23.17 +@end
   23.18 +
   23.19 +#endif /* _SDLMain_h_ */
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLMain.m	Tue Sep 29 07:59:23 2009 +0000
    24.3 @@ -0,0 +1,383 @@
    24.4 +/*   SDLMain.m - main entry point for our Cocoa-ized SDL app
    24.5 +       Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
    24.6 +       Non-NIB-Code & other changes: Max Horn <max@quendi.de>
    24.7 +
    24.8 +    Feel free to customize this file to suit your needs
    24.9 +*/
   24.10 +
   24.11 +#include "SDL.h"
   24.12 +#include "SDLMain.h"
   24.13 +#include <sys/param.h> /* for MAXPATHLEN */
   24.14 +#include <unistd.h>
   24.15 +
   24.16 +/* For some reaon, Apple removed setAppleMenu from the headers in 10.4,
   24.17 + but the method still is there and works. To avoid warnings, we declare
   24.18 + it ourselves here. */
   24.19 +@interface NSApplication(SDL_Missing_Methods)
   24.20 +- (void)setAppleMenu:(NSMenu *)menu;
   24.21 +@end
   24.22 +
   24.23 +/* Use this flag to determine whether we use SDLMain.nib or not */
   24.24 +#define		SDL_USE_NIB_FILE	0
   24.25 +
   24.26 +/* Use this flag to determine whether we use CPS (docking) or not */
   24.27 +#define		SDL_USE_CPS		1
   24.28 +#ifdef SDL_USE_CPS
   24.29 +/* Portions of CPS.h */
   24.30 +typedef struct CPSProcessSerNum
   24.31 +{
   24.32 +	UInt32		lo;
   24.33 +	UInt32		hi;
   24.34 +} CPSProcessSerNum;
   24.35 +
   24.36 +extern OSErr	CPSGetCurrentProcess( CPSProcessSerNum *psn);
   24.37 +extern OSErr 	CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5);
   24.38 +extern OSErr	CPSSetFrontProcess( CPSProcessSerNum *psn);
   24.39 +
   24.40 +#endif /* SDL_USE_CPS */
   24.41 +
   24.42 +static int    gArgc;
   24.43 +static char  **gArgv;
   24.44 +static BOOL   gFinderLaunch;
   24.45 +static BOOL   gCalledAppMainline = FALSE;
   24.46 +
   24.47 +static NSString *getApplicationName(void)
   24.48 +{
   24.49 +    const NSDictionary *dict;
   24.50 +    NSString *appName = 0;
   24.51 +
   24.52 +    /* Determine the application name */
   24.53 +    dict = (const NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle());
   24.54 +    if (dict)
   24.55 +        appName = [dict objectForKey: @"CFBundleName"];
   24.56 +    
   24.57 +    if (![appName length])
   24.58 +        appName = [[NSProcessInfo processInfo] processName];
   24.59 +
   24.60 +    return appName;
   24.61 +}
   24.62 +
   24.63 +#if SDL_USE_NIB_FILE
   24.64 +/* A helper category for NSString */
   24.65 +@interface NSString (ReplaceSubString)
   24.66 +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString;
   24.67 +@end
   24.68 +#endif
   24.69 +
   24.70 +@interface SDLApplication : NSApplication
   24.71 +@end
   24.72 +
   24.73 +@implementation SDLApplication
   24.74 +/* Invoked from the Quit menu item */
   24.75 +- (void)terminate:(id)sender
   24.76 +{
   24.77 +    /* Post a SDL_QUIT event */
   24.78 +    SDL_Event event;
   24.79 +    event.type = SDL_QUIT;
   24.80 +    SDL_PushEvent(&event);
   24.81 +}
   24.82 +@end
   24.83 +
   24.84 +/* The main class of the application, the application's delegate */
   24.85 +@implementation SDLMain
   24.86 +
   24.87 +/* Set the working directory to the .app's parent directory */
   24.88 +- (void) setupWorkingDirectory:(BOOL)shouldChdir
   24.89 +{
   24.90 +    if (shouldChdir)
   24.91 +    {
   24.92 +        char parentdir[MAXPATHLEN];
   24.93 +        CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle());
   24.94 +        CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url);
   24.95 +        if (CFURLGetFileSystemRepresentation(url2, 1, (UInt8 *)parentdir, MAXPATHLEN)) {
   24.96 +            chdir(parentdir);   /* chdir to the binary app's parent */
   24.97 +        }
   24.98 +        CFRelease(url);
   24.99 +        CFRelease(url2);
  24.100 +    }
  24.101 +}
  24.102 +
  24.103 +#if SDL_USE_NIB_FILE
  24.104 +
  24.105 +/* Fix menu to contain the real app name instead of "SDL App" */
  24.106 +- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName
  24.107 +{
  24.108 +    NSRange aRange;
  24.109 +    NSEnumerator *enumerator;
  24.110 +    NSMenuItem *menuItem;
  24.111 +
  24.112 +    aRange = [[aMenu title] rangeOfString:@"SDL App"];
  24.113 +    if (aRange.length != 0)
  24.114 +        [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]];
  24.115 +
  24.116 +    enumerator = [[aMenu itemArray] objectEnumerator];
  24.117 +    while ((menuItem = [enumerator nextObject]))
  24.118 +    {
  24.119 +        aRange = [[menuItem title] rangeOfString:@"SDL App"];
  24.120 +        if (aRange.length != 0)
  24.121 +            [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]];
  24.122 +        if ([menuItem hasSubmenu])
  24.123 +            [self fixMenu:[menuItem submenu] withAppName:appName];
  24.124 +    }
  24.125 +    [ aMenu sizeToFit ];
  24.126 +}
  24.127 +
  24.128 +#else
  24.129 +
  24.130 +static void setApplicationMenu(void)
  24.131 +{
  24.132 +    /* warning: this code is very odd */
  24.133 +    NSMenu *appleMenu;
  24.134 +    NSMenuItem *menuItem;
  24.135 +    NSString *title;
  24.136 +    NSString *appName;
  24.137 +    
  24.138 +    appName = getApplicationName();
  24.139 +    appleMenu = [[NSMenu alloc] initWithTitle:@""];
  24.140 +    
  24.141 +    /* Add menu items */
  24.142 +    title = [@"About " stringByAppendingString:appName];
  24.143 +    [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];
  24.144 +
  24.145 +    [appleMenu addItem:[NSMenuItem separatorItem]];
  24.146 +
  24.147 +    title = [@"Hide " stringByAppendingString:appName];
  24.148 +    [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"];
  24.149 +
  24.150 +    menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
  24.151 +    [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)];
  24.152 +
  24.153 +    [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""];
  24.154 +
  24.155 +    [appleMenu addItem:[NSMenuItem separatorItem]];
  24.156 +
  24.157 +    title = [@"Quit " stringByAppendingString:appName];
  24.158 +    [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"];
  24.159 +
  24.160 +    
  24.161 +    /* Put menu into the menubar */
  24.162 +    menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
  24.163 +    [menuItem setSubmenu:appleMenu];
  24.164 +    [[NSApp mainMenu] addItem:menuItem];
  24.165 +
  24.166 +    /* Tell the application object that this is now the application menu */
  24.167 +    [NSApp setAppleMenu:appleMenu];
  24.168 +
  24.169 +    /* Finally give up our references to the objects */
  24.170 +    [appleMenu release];
  24.171 +    [menuItem release];
  24.172 +}
  24.173 +
  24.174 +/* Create a window menu */
  24.175 +static void setupWindowMenu(void)
  24.176 +{
  24.177 +    NSMenu      *windowMenu;
  24.178 +    NSMenuItem  *windowMenuItem;
  24.179 +    NSMenuItem  *menuItem;
  24.180 +
  24.181 +    windowMenu = [[NSMenu alloc] initWithTitle:@"Window"];
  24.182 +    
  24.183 +    /* "Minimize" item */
  24.184 +    menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"];
  24.185 +    [windowMenu addItem:menuItem];
  24.186 +    [menuItem release];
  24.187 +    
  24.188 +    /* Put menu into the menubar */
  24.189 +    windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""];
  24.190 +    [windowMenuItem setSubmenu:windowMenu];
  24.191 +    [[NSApp mainMenu] addItem:windowMenuItem];
  24.192 +    
  24.193 +    /* Tell the application object that this is now the window menu */
  24.194 +    [NSApp setWindowsMenu:windowMenu];
  24.195 +
  24.196 +    /* Finally give up our references to the objects */
  24.197 +    [windowMenu release];
  24.198 +    [windowMenuItem release];
  24.199 +}
  24.200 +
  24.201 +/* Replacement for NSApplicationMain */
  24.202 +static void CustomApplicationMain (int argc, char **argv)
  24.203 +{
  24.204 +    NSAutoreleasePool	*pool = [[NSAutoreleasePool alloc] init];
  24.205 +    SDLMain				*sdlMain;
  24.206 +
  24.207 +    /* Ensure the application object is initialised */
  24.208 +    [SDLApplication sharedApplication];
  24.209 +    
  24.210 +#ifdef SDL_USE_CPS
  24.211 +    {
  24.212 +        CPSProcessSerNum PSN;
  24.213 +        /* Tell the dock about us */
  24.214 +        if (!CPSGetCurrentProcess(&PSN))
  24.215 +            if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103))
  24.216 +                if (!CPSSetFrontProcess(&PSN))
  24.217 +                    [SDLApplication sharedApplication];
  24.218 +    }
  24.219 +#endif /* SDL_USE_CPS */
  24.220 +
  24.221 +    /* Set up the menubar */
  24.222 +    [NSApp setMainMenu:[[NSMenu alloc] init]];
  24.223 +    setApplicationMenu();
  24.224 +    setupWindowMenu();
  24.225 +
  24.226 +    /* Create SDLMain and make it the app delegate */
  24.227 +    sdlMain = [[SDLMain alloc] init];
  24.228 +    [NSApp setDelegate:sdlMain];
  24.229 +    
  24.230 +    /* Start the main event loop */
  24.231 +    [NSApp run];
  24.232 +    
  24.233 +    [sdlMain release];
  24.234 +    [pool release];
  24.235 +}
  24.236 +
  24.237 +#endif
  24.238 +
  24.239 +
  24.240 +/*
  24.241 + * Catch document open requests...this lets us notice files when the app
  24.242 + *  was launched by double-clicking a document, or when a document was
  24.243 + *  dragged/dropped on the app's icon. You need to have a
  24.244 + *  CFBundleDocumentsType section in your Info.plist to get this message,
  24.245 + *  apparently.
  24.246 + *
  24.247 + * Files are added to gArgv, so to the app, they'll look like command line
  24.248 + *  arguments. Previously, apps launched from the finder had nothing but
  24.249 + *  an argv[0].
  24.250 + *
  24.251 + * This message may be received multiple times to open several docs on launch.
  24.252 + *
  24.253 + * This message is ignored once the app's mainline has been called.
  24.254 + */
  24.255 +- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
  24.256 +{
  24.257 +    const char *temparg;
  24.258 +    size_t arglen;
  24.259 +    char *arg;
  24.260 +    char **newargv;
  24.261 +
  24.262 +    if (!gFinderLaunch)  /* MacOS is passing command line args. */
  24.263 +        return FALSE;
  24.264 +
  24.265 +    if (gCalledAppMainline)  /* app has started, ignore this document. */
  24.266 +        return FALSE;
  24.267 +
  24.268 +    temparg = [filename UTF8String];
  24.269 +    arglen = SDL_strlen(temparg) + 1;
  24.270 +    arg = (char *) SDL_malloc(arglen);
  24.271 +    if (arg == NULL)
  24.272 +        return FALSE;
  24.273 +
  24.274 +    newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2));
  24.275 +    if (newargv == NULL)
  24.276 +    {
  24.277 +        SDL_free(arg);
  24.278 +        return FALSE;
  24.279 +    }
  24.280 +    gArgv = newargv;
  24.281 +
  24.282 +    SDL_strlcpy(arg, temparg, arglen);
  24.283 +    gArgv[gArgc++] = arg;
  24.284 +    gArgv[gArgc] = NULL;
  24.285 +    return TRUE;
  24.286 +}
  24.287 +
  24.288 +
  24.289 +/* Called when the internal event loop has just started running */
  24.290 +- (void) applicationDidFinishLaunching: (NSNotification *) note
  24.291 +{
  24.292 +    int status;
  24.293 +
  24.294 +    /* Set the working directory to the .app's parent directory */
  24.295 +    [self setupWorkingDirectory:gFinderLaunch];
  24.296 +
  24.297 +#if SDL_USE_NIB_FILE
  24.298 +    /* Set the main menu to contain the real app name instead of "SDL App" */
  24.299 +    [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()];
  24.300 +#endif
  24.301 +
  24.302 +    /* Hand off to main application code */
  24.303 +    gCalledAppMainline = TRUE;
  24.304 +    status = SDL_main (gArgc, gArgv);
  24.305 +
  24.306 +    /* We're done, thank you for playing */
  24.307 +    exit(status);
  24.308 +}
  24.309 +@end
  24.310 +
  24.311 +
  24.312 +@implementation NSString (ReplaceSubString)
  24.313 +
  24.314 +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString
  24.315 +{
  24.316 +    unsigned int bufferSize;
  24.317 +    unsigned int selfLen = [self length];
  24.318 +    unsigned int aStringLen = [aString length];
  24.319 +    unichar *buffer;
  24.320 +    NSRange localRange;
  24.321 +    NSString *result;
  24.322 +
  24.323 +    bufferSize = selfLen + aStringLen - aRange.length;
  24.324 +    buffer = (unichar *)NSAllocateMemoryPages(bufferSize*sizeof(unichar));
  24.325 +    
  24.326 +    /* Get first part into buffer */
  24.327 +    localRange.location = 0;
  24.328 +    localRange.length = aRange.location;
  24.329 +    [self getCharacters:buffer range:localRange];
  24.330 +    
  24.331 +    /* Get middle part into buffer */
  24.332 +    localRange.location = 0;
  24.333 +    localRange.length = aStringLen;
  24.334 +    [aString getCharacters:(buffer+aRange.location) range:localRange];
  24.335 +     
  24.336 +    /* Get last part into buffer */
  24.337 +    localRange.location = aRange.location + aRange.length;
  24.338 +    localRange.length = selfLen - localRange.location;
  24.339 +    [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange];
  24.340 +    
  24.341 +    /* Build output string */
  24.342 +    result = [NSString stringWithCharacters:buffer length:bufferSize];
  24.343 +    
  24.344 +    NSDeallocateMemoryPages(buffer, bufferSize);
  24.345 +    
  24.346 +    return result;
  24.347 +}
  24.348 +
  24.349 +@end
  24.350 +
  24.351 +
  24.352 +
  24.353 +#ifdef main
  24.354 +#  undef main
  24.355 +#endif
  24.356 +
  24.357 +
  24.358 +/* Main entry point to executable - should *not* be SDL_main! */
  24.359 +int main (int argc, char **argv)
  24.360 +{
  24.361 +    /* Copy the arguments into a global variable */
  24.362 +    /* This is passed if we are launched by double-clicking */
  24.363 +    if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) {
  24.364 +        gArgv = (char **) SDL_malloc(sizeof (char *) * 2);
  24.365 +        gArgv[0] = argv[0];
  24.366 +        gArgv[1] = NULL;
  24.367 +        gArgc = 1;
  24.368 +        gFinderLaunch = YES;
  24.369 +    } else {
  24.370 +        int i;
  24.371 +        gArgc = argc;
  24.372 +        gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1));
  24.373 +        for (i = 0; i <= argc; i++)
  24.374 +            gArgv[i] = argv[i];
  24.375 +        gFinderLaunch = NO;
  24.376 +    }
  24.377 +
  24.378 +#if SDL_USE_NIB_FILE
  24.379 +    [SDLApplication poseAsClass:[NSApplication class]];
  24.380 +    NSApplicationMain (argc, argv);
  24.381 +#else
  24.382 +    CustomApplicationMain (argc, argv);
  24.383 +#endif
  24.384 +    return 0;
  24.385 +}
  24.386 +
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLOpenGLApp.xcodeproj/TemplateInfo.plist	Tue Sep 29 07:59:23 2009 +0000
    25.3 @@ -0,0 +1,12 @@
    25.4 +{
    25.5 +	FilesToRename = {
    25.6 +		"SDLApp_Prefix.pch" = "PROJECTNAME_Prefix.pch";
    25.7 +	};
    25.8 +	FilesToMacroExpand = (
    25.9 +		"PROJECTNAME_Prefix.pch",
   25.10 +		"Info.plist",
   25.11 +		"English.lproj/InfoPlist.strings",
   25.12 +		"main.c",
   25.13 +	);
   25.14 +	Description = "This project builds an SDL-based application that uses OpenGL.";
   25.15 +}
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/SDLOpenGLApp.xcodeproj/project.pbxproj	Tue Sep 29 07:59:23 2009 +0000
    26.3 @@ -0,0 +1,335 @@
    26.4 +// !$*UTF8*$!
    26.5 +{
    26.6 +	archiveVersion = 1;
    26.7 +	classes = {
    26.8 +	};
    26.9 +	objectVersion = 42;
   26.10 +	objects = {
   26.11 +
   26.12 +/* Begin PBXBuildFile section */
   26.13 +		002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; };
   26.14 +		002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */ = {isa = PBXBuildFile; fileRef = 002F39F909D0881F00EBEB88 /* SDL.framework */; };
   26.15 +		002F3A3F09D088BA00EBEB88 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F3A3E09D088BA00EBEB88 /* main.c */; };
   26.16 +		002F3BFA09D0938900EBEB88 /* atlantis.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F3BF409D0938900EBEB88 /* atlantis.c */; };
   26.17 +		002F3BFC09D0938900EBEB88 /* dolphin.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F3BF609D0938900EBEB88 /* dolphin.c */; };
   26.18 +		002F3BFD09D0938900EBEB88 /* shark.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F3BF709D0938900EBEB88 /* shark.c */; };
   26.19 +		002F3BFE09D0938900EBEB88 /* swim.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F3BF809D0938900EBEB88 /* swim.c */; };
   26.20 +		002F3BFF09D0938900EBEB88 /* whale.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F3BF909D0938900EBEB88 /* whale.c */; };
   26.21 +		002F3C0109D093BD00EBEB88 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F3C0009D093BD00EBEB88 /* OpenGL.framework */; };
   26.22 +		002F3C6109D0951E00EBEB88 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F3C6009D0951E00EBEB88 /* GLUT.framework */; };
   26.23 +		8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
   26.24 +		8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
   26.25 +/* End PBXBuildFile section */
   26.26 +
   26.27 +/* Begin PBXCopyFilesBuildPhase section */
   26.28 +		002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */ = {
   26.29 +			isa = PBXCopyFilesBuildPhase;
   26.30 +			buildActionMask = 2147483647;
   26.31 +			dstPath = "";
   26.32 +			dstSubfolderSpec = 10;
   26.33 +			files = (
   26.34 +				002F3A0009D0884600EBEB88 /* SDL.framework in Copy Frameworks into .app bundle */,
   26.35 +			);
   26.36 +			name = "Copy Frameworks into .app bundle";
   26.37 +			runOnlyForDeploymentPostprocessing = 0;
   26.38 +		};
   26.39 +/* End PBXCopyFilesBuildPhase section */
   26.40 +
   26.41 +/* Begin PBXFileReference section */
   26.42 +		002F39F909D0881F00EBEB88 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.framework; sourceTree = "<absolute>"; };
   26.43 +		002F3A3E09D088BA00EBEB88 /* main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = SOURCE_ROOT; };
   26.44 +		002F3BF409D0938900EBEB88 /* atlantis.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = atlantis.c; path = atlantis/atlantis.c; sourceTree = SOURCE_ROOT; };
   26.45 +		002F3BF509D0938900EBEB88 /* atlantis.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = atlantis.h; path = atlantis/atlantis.h; sourceTree = SOURCE_ROOT; };
   26.46 +		002F3BF609D0938900EBEB88 /* dolphin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dolphin.c; path = atlantis/dolphin.c; sourceTree = SOURCE_ROOT; };
   26.47 +		002F3BF709D0938900EBEB88 /* shark.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = shark.c; path = atlantis/shark.c; sourceTree = SOURCE_ROOT; };
   26.48 +		002F3BF809D0938900EBEB88 /* swim.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = swim.c; path = atlantis/swim.c; sourceTree = SOURCE_ROOT; };
   26.49 +		002F3BF909D0938900EBEB88 /* whale.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = whale.c; path = atlantis/whale.c; sourceTree = SOURCE_ROOT; };
   26.50 +		002F3C0009D093BD00EBEB88 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
   26.51 +		002F3C6009D0951E00EBEB88 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = ../../../../../../../../../../System/Library/Frameworks/GLUT.framework; sourceTree = SOURCE_ROOT; };
   26.52 +		089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
   26.53 +		1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
   26.54 +		29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
   26.55 +		29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
   26.56 +		32CA4F630368D1EE00C91783 /* «PROJECTNAME»_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "«PROJECTNAME»_Prefix.pch"; sourceTree = "<group>"; };
   26.57 +		8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
   26.58 +		8D1107320486CEB800E47090 /* «PROJECTNAME».app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "«PROJECTNAME».app"; sourceTree = BUILT_PRODUCTS_DIR; };
   26.59 +/* End PBXFileReference section */
   26.60 +
   26.61 +/* Begin PBXFrameworksBuildPhase section */
   26.62 +		8D11072E0486CEB800E47090 /* Frameworks */ = {
   26.63 +			isa = PBXFrameworksBuildPhase;
   26.64 +			buildActionMask = 2147483647;
   26.65 +			files = (
   26.66 +				002F39FA09D0881F00EBEB88 /* SDL.framework in Frameworks */,
   26.67 +				002F3C6109D0951E00EBEB88 /* GLUT.framework in Frameworks */,
   26.68 +				8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
   26.69 +				002F3C0109D093BD00EBEB88 /* OpenGL.framework in Frameworks */,
   26.70 +			);
   26.71 +			runOnlyForDeploymentPostprocessing = 0;
   26.72 +		};
   26.73 +/* End PBXFrameworksBuildPhase section */
   26.74 +
   26.75 +/* Begin PBXGroup section */
   26.76 +		002F3BF309D0937800EBEB88 /* atlantis */ = {
   26.77 +			isa = PBXGroup;
   26.78 +			children = (
   26.79 +				002F3BF409D0938900EBEB88 /* atlantis.c */,
   26.80 +				002F3BF509D0938900EBEB88 /* atlantis.h */,
   26.81 +				002F3BF609D0938900EBEB88 /* dolphin.c */,
   26.82 +				002F3BF709D0938900EBEB88 /* shark.c */,
   26.83 +				002F3BF809D0938900EBEB88 /* swim.c */,
   26.84 +				002F3BF909D0938900EBEB88 /* whale.c */,
   26.85 +			);
   26.86 +			name = atlantis;
   26.87 +			sourceTree = "<group>";
   26.88 +		};
   26.89 +		080E96DDFE201D6D7F000001 /* Classes */ = {
   26.90 +			isa = PBXGroup;
   26.91 +			children = (
   26.92 +			);
   26.93 +			name = Classes;
   26.94 +			sourceTree = "<group>";
   26.95 +		};
   26.96 +		1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
   26.97 +			isa = PBXGroup;
   26.98 +			children = (
   26.99 +				002F39F909D0881F00EBEB88 /* SDL.framework */,
  26.100 +				002F3C6009D0951E00EBEB88 /* GLUT.framework */,
  26.101 +				1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
  26.102 +				002F3C0009D093BD00EBEB88 /* OpenGL.framework */,
  26.103 +			);
  26.104 +			name = "Linked Frameworks";
  26.105 +			sourceTree = "<group>";
  26.106 +		};
  26.107 +		1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
  26.108 +			isa = PBXGroup;
  26.109 +			children = (
  26.110 +				29B97324FDCFA39411CA2CEA /* AppKit.framework */,
  26.111 +				29B97325FDCFA39411CA2CEA /* Foundation.framework */,
  26.112 +			);
  26.113 +			name = "Other Frameworks";
  26.114 +			sourceTree = "<group>";
  26.115 +		};
  26.116 +		19C28FACFE9D520D11CA2CBB /* Products */ = {
  26.117 +			isa = PBXGroup;
  26.118 +			children = (
  26.119 +				8D1107320486CEB800E47090 /* «PROJECTNAME».app */,
  26.120 +			);
  26.121 +			name = Products;
  26.122 +			sourceTree = "<group>";
  26.123 +		};
  26.124 +		29B97314FDCFA39411CA2CEA /* «PROJECTNAMEASXML» */ = {
  26.125 +			isa = PBXGroup;
  26.126 +			children = (
  26.127 +				080E96DDFE201D6D7F000001 /* Classes */,
  26.128 +				29B97315FDCFA39411CA2CEA /* Other Sources */,
  26.129 +				29B97317FDCFA39411CA2CEA /* Resources */,
  26.130 +				29B97323FDCFA39411CA2CEA /* Frameworks */,
  26.131 +				19C28FACFE9D520D11CA2CBB /* Products */,
  26.132 +			);
  26.133 +			name = "«PROJECTNAMEASXML»";
  26.134 +			sourceTree = "<group>";
  26.135 +		};
  26.136 +		29B97315FDCFA39411CA2CEA /* Other Sources */ = {
  26.137 +			isa = PBXGroup;
  26.138 +			children = (
  26.139 +				002F3BF309D0937800EBEB88 /* atlantis */,
  26.140 +				32CA4F630368D1EE00C91783 /* «PROJECTNAME»_Prefix.pch */,
  26.141 +				002F3A3E09D088BA00EBEB88 /* main.c */,
  26.142 +			);
  26.143 +			name = "Other Sources";
  26.144 +			sourceTree = "<group>";
  26.145 +		};
  26.146 +		29B97317FDCFA39411CA2CEA /* Resources */ = {
  26.147 +			isa = PBXGroup;
  26.148 +			children = (
  26.149 +				8D1107310486CEB800E47090 /* Info.plist */,
  26.150 +				089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
  26.151 +			);
  26.152 +			name = Resources;
  26.153 +			sourceTree = "<group>";
  26.154 +		};
  26.155 +		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
  26.156 +			isa = PBXGroup;
  26.157 +			children = (
  26.158 +				1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
  26.159 +				1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
  26.160 +			);
  26.161 +			name = Frameworks;
  26.162 +			sourceTree = "<group>";
  26.163 +		};
  26.164 +/* End PBXGroup section */
  26.165 +
  26.166 +/* Begin PBXNativeTarget section */
  26.167 +		8D1107260486CEB800E47090 /* «PROJECTNAME» */ = {
  26.168 +			isa = PBXNativeTarget;
  26.169 +			buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */;
  26.170 +			buildPhases = (
  26.171 +				8D1107290486CEB800E47090 /* Resources */,
  26.172 +				8D11072C0486CEB800E47090 /* Sources */,
  26.173 +				8D11072E0486CEB800E47090 /* Frameworks */,
  26.174 +				002F39FD09D0883400EBEB88 /* Copy Frameworks into .app bundle */,
  26.175 +			);
  26.176 +			buildRules = (
  26.177 +			);
  26.178 +			dependencies = (
  26.179 +			);
  26.180 +			name = "«PROJECTNAME»";
  26.181 +			productInstallPath = "$(HOME)/Applications";
  26.182 +			productName = "«PROJECTNAME»";
  26.183 +			productReference = 8D1107320486CEB800E47090 /* «PROJECTNAME».app */;
  26.184 +			productType = "com.apple.product-type.application";
  26.185 +		};
  26.186 +/* End PBXNativeTarget section */
  26.187 +
  26.188 +/* Begin PBXProject section */
  26.189 +		29B97313FDCFA39411CA2CEA /* Project object */ = {
  26.190 +			isa = PBXProject;
  26.191 +			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SDLOpenGLApp" */;
  26.192 +			compatibilityVersion = "Xcode 2.4";
  26.193 +			hasScannedForEncodings = 1;
  26.194 +			mainGroup = 29B97314FDCFA39411CA2CEA /* «PROJECTNAMEASXML» */;
  26.195 +			projectDirPath = "";
  26.196 +			projectRoot = "";
  26.197 +			targets = (
  26.198 +				8D1107260486CEB800E47090 /* «PROJECTNAME» */,
  26.199 +			);
  26.200 +		};
  26.201 +/* End PBXProject section */
  26.202 +
  26.203 +/* Begin PBXResourcesBuildPhase section */
  26.204 +		8D1107290486CEB800E47090 /* Resources */ = {
  26.205 +			isa = PBXResourcesBuildPhase;
  26.206 +			buildActionMask = 2147483647;
  26.207 +			files = (
  26.208 +				8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
  26.209 +			);
  26.210 +			runOnlyForDeploymentPostprocessing = 0;
  26.211 +		};
  26.212 +/* End PBXResourcesBuildPhase section */
  26.213 +
  26.214 +/* Begin PBXSourcesBuildPhase section */
  26.215 +		8D11072C0486CEB800E47090 /* Sources */ = {
  26.216 +			isa = PBXSourcesBuildPhase;
  26.217 +			buildActionMask = 2147483647;
  26.218 +			files = (
  26.219 +				002F3A3F09D088BA00EBEB88 /* main.c in Sources */,
  26.220 +				002F3BFA09D0938900EBEB88 /* atlantis.c in Sources */,
  26.221 +				002F3BFC09D0938900EBEB88 /* dolphin.c in Sources */,
  26.222 +				002F3BFD09D0938900EBEB88 /* shark.c in Sources */,
  26.223 +				002F3BFE09D0938900EBEB88 /* swim.c in Sources */,
  26.224 +				002F3BFF09D0938900EBEB88 /* whale.c in Sources */,
  26.225 +			);
  26.226 +			runOnlyForDeploymentPostprocessing = 0;
  26.227 +		};
  26.228 +/* End PBXSourcesBuildPhase section */
  26.229 +
  26.230 +/* Begin PBXVariantGroup section */
  26.231 +		089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
  26.232 +			isa = PBXVariantGroup;
  26.233 +			children = (
  26.234 +				089C165DFE840E0CC02AAC07 /* English */,
  26.235 +			);
  26.236 +			name = InfoPlist.strings;
  26.237 +			sourceTree = "<group>";
  26.238 +		};
  26.239 +/* End PBXVariantGroup section */
  26.240 +
  26.241 +/* Begin XCBuildConfiguration section */
  26.242 +		C01FCF4B08A954540054247B /* Debug */ = {
  26.243 +			isa = XCBuildConfiguration;
  26.244 +			buildSettings = {
  26.245 +				COPY_PHASE_STRIP = NO;
  26.246 +				GCC_DYNAMIC_NO_PIC = NO;
  26.247 +				GCC_ENABLE_FIX_AND_CONTINUE = YES;
  26.248 +				GCC_MODEL_TUNING = G5;
  26.249 +				GCC_OPTIMIZATION_LEVEL = 0;
  26.250 +				INFOPLIST_FILE = Info.plist;
  26.251 +				INSTALL_PATH = "$(HOME)/Applications";
  26.252 +				PRODUCT_NAME = "«PROJECTNAME»";
  26.253 +				WRAPPER_EXTENSION = app;
  26.254 +				ZERO_LINK = YES;
  26.255 +			};
  26.256 +			name = Debug;
  26.257 +		};
  26.258 +		C01FCF4C08A954540054247B /* Release */ = {
  26.259 +			isa = XCBuildConfiguration;
  26.260 +			buildSettings = {
  26.261 +				ARCHS = (
  26.262 +					ppc,
  26.263 +					i386,
  26.264 +				);
  26.265 +				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
  26.266 +				GCC_MODEL_TUNING = G5;
  26.267 +				INFOPLIST_FILE = Info.plist;
  26.268 +				INSTALL_PATH = "$(HOME)/Applications";
  26.269 +				PRODUCT_NAME = "«PROJECTNAME»";
  26.270 +				WRAPPER_EXTENSION = app;
  26.271 +			};
  26.272 +			name = Release;
  26.273 +		};
  26.274 +		C01FCF4F08A954540054247B /* Debug */ = {
  26.275 +			isa = XCBuildConfiguration;
  26.276 +			buildSettings = {
  26.277 +				FRAMEWORK_SEARCH_PATHS = (
  26.278 +					"$(HOME)/Library/Frameworks",
  26.279 +					/Library/Frameworks,
  26.280 +					"$(FRAMEWORK_SEARCH_PATHS)",
  26.281 +				);
  26.282 +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
  26.283 +				GCC_WARN_UNUSED_VARIABLE = YES;
  26.284 +				HEADER_SEARCH_PATHS = (
  26.285 +					"$(HOME)/Library/Frameworks/SDL.framework/Headers",
  26.286 +					/Library/Frameworks/SDL.framework/Headers,
  26.287 +					"$(HEADER_SEARCH_PATHS)",
  26.288 +				);
  26.289 +				PREBINDING = NO;
  26.290 +				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
  26.291 +			};
  26.292 +			name = Debug;
  26.293 +		};
  26.294 +		C01FCF5008A954540054247B /* Release */ = {
  26.295 +			isa = XCBuildConfiguration;
  26.296 +			buildSettings = {
  26.297 +				FRAMEWORK_SEARCH_PATHS = (
  26.298 +					"$(HOME)/Library/Frameworks",
  26.299 +					/Library/Frameworks,
  26.300 +					"$(FRAMEWORK_SEARCH_PATHS)",
  26.301 +				);
  26.302 +				GCC_WARN_ABOUT_RETURN_TYPE = YES;
  26.303 +				GCC_WARN_UNUSED_VARIABLE = YES;
  26.304 +				HEADER_SEARCH_PATHS = (
  26.305 +					"$(HOME)/Library/Frameworks/SDL.framework/Headers",
  26.306 +					/Library/Frameworks/SDL.framework/Headers,
  26.307 +					"$(HEADER_SEARCH_PATHS)",
  26.308 +				);
  26.309 +				PREBINDING = NO;
  26.310 +				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
  26.311 +			};
  26.312 +			name = Release;
  26.313 +		};
  26.314 +/* End XCBuildConfiguration section */
  26.315 +
  26.316 +/* Begin XCConfigurationList section */
  26.317 +		C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "«PROJECTNAME»" */ = {
  26.318 +			isa = XCConfigurationList;
  26.319 +			buildConfigurations = (
  26.320 +				C01FCF4B08A954540054247B /* Debug */,
  26.321 +				C01FCF4C08A954540054247B /* Release */,
  26.322 +			);
  26.323 +			defaultConfigurationIsVisible = 0;
  26.324 +			defaultConfigurationName = Release;
  26.325 +		};
  26.326 +		C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SDLOpenGLApp" */ = {
  26.327 +			isa = XCConfigurationList;
  26.328 +			buildConfigurations = (
  26.329 +				C01FCF4F08A954540054247B /* Debug */,
  26.330 +				C01FCF5008A954540054247B /* Release */,
  26.331 +			);
  26.332 +			defaultConfigurationIsVisible = 0;
  26.333 +			defaultConfigurationName = Release;
  26.334 +		};
  26.335 +/* End XCConfigurationList section */
  26.336 +	};
  26.337 +	rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
  26.338 +}
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/atlantis.c	Tue Sep 29 07:59:23 2009 +0000
    27.3 @@ -0,0 +1,459 @@
    27.4 +
    27.5 +/* Copyright (c) Mark J. Kilgard, 1994. */
    27.6 +
    27.7 +/**
    27.8 + * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
    27.9 + * ALL RIGHTS RESERVED
   27.10 + * Permission to use, copy, modify, and distribute this software for
   27.11 + * any purpose and without fee is hereby granted, provided that the above
   27.12 + * copyright notice appear in all copies and that both the copyright notice
   27.13 + * and this permission notice appear in supporting documentation, and that
   27.14 + * the name of Silicon Graphics, Inc. not be used in advertising
   27.15 + * or publicity pertaining to distribution of the software without specific,
   27.16 + * written prior permission.
   27.17 + *
   27.18 + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
   27.19 + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
   27.20 + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
   27.21 + * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
   27.22 + * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
   27.23 + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
   27.24 + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
   27.25 + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
   27.26 + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
   27.27 + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
   27.28 + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
   27.29 + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
   27.30 + *
   27.31 + * US Government Users Restricted Rights
   27.32 + * Use, duplication, or disclosure by the Government is subject to
   27.33 + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
   27.34 + * (c)(1)(ii) of the Rights in Technical Data and Computer Software
   27.35 + * clause at DFARS 252.227-7013 and/or in similar or successor
   27.36 + * clauses in the FAR or the DOD or NASA FAR Supplement.
   27.37 + * Unpublished-- rights reserved under the copyright laws of the
   27.38 + * United States.  Contractor/manufacturer is Silicon Graphics,
   27.39 + * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
   27.40 + *
   27.41 + * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
   27.42 + */
   27.43 +#include <stdio.h>
   27.44 +#include <stdlib.h>
   27.45 +#include <string.h>
   27.46 +#include <math.h>
   27.47 +#include <sys/time.h>
   27.48 +#include <GLUT/glut.h>
   27.49 +#include "atlantis.h"
   27.50 +
   27.51 +fishRec sharks[NUM_SHARKS];
   27.52 +fishRec momWhale;
   27.53 +fishRec babyWhale;
   27.54 +fishRec dolph;
   27.55 +
   27.56 +GLboolean Timing = GL_TRUE;
   27.57 +
   27.58 +int w_win = 640;
   27.59 +int h_win = 480;
   27.60 +GLint count  = 0;
   27.61 +GLenum StrMode = GL_VENDOR;
   27.62 +
   27.63 +GLboolean moving;
   27.64 +
   27.65 +static double mtime(void)
   27.66 +{
   27.67 +   struct timeval tk_time;
   27.68 +   struct timezone tz;
   27.69 +   
   27.70 +   gettimeofday(&tk_time, &tz);
   27.71 +   
   27.72 +   return 4294.967296 * tk_time.tv_sec + 0.000001 * tk_time.tv_usec;
   27.73 +}
   27.74 +
   27.75 +static double filter(double in, double *save)
   27.76 +{
   27.77 +	static double k1 = 0.9;
   27.78 +	static double k2 = 0.05;
   27.79 +
   27.80 +	save[3] = in;
   27.81 +	save[1] = save[0]*k1 + k2*(save[3] + save[2]);
   27.82 +
   27.83 +	save[0]=save[1];
   27.84 +	save[2]=save[3];
   27.85 +
   27.86 +	return(save[1]);
   27.87 +}
   27.88 +
   27.89 +void DrawStr(const char *str)
   27.90 +{
   27.91 +	GLint i = 0;
   27.92 +	
   27.93 +	if(!str) return;
   27.94 +        
   27.95 +	while(str[i])
   27.96 +	{
   27.97 +		glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, str[i]);
   27.98 +		i++;
   27.99 +	}
  27.100 +}
  27.101 +
  27.102 +void
  27.103 +InitFishs(void)
  27.104 +{
  27.105 +    int i;
  27.106 +
  27.107 +    for (i = 0; i < NUM_SHARKS; i++) {
  27.108 +        sharks[i].x = 70000.0 + rand() % 6000;
  27.109 +        sharks[i].y = rand() % 6000;
  27.110 +        sharks[i].z = rand() % 6000;
  27.111 +        sharks[i].psi = rand() % 360 - 180.0;
  27.112 +        sharks[i].v = 1.0;
  27.113 +    }
  27.114 +
  27.115 +    dolph.x = 30000.0;
  27.116 +    dolph.y = 0.0;
  27.117 +    dolph.z = 6000.0;
  27.118 +    dolph.psi = 90.0;
  27.119 +    dolph.theta = 0.0;
  27.120 +    dolph.v = 3.0;
  27.121 +
  27.122 +    momWhale.x = 70000.0;
  27.123 +    momWhale.y = 0.0;
  27.124 +    momWhale.z = 0.0;
  27.125 +    momWhale.psi = 90.0;
  27.126 +    momWhale.theta = 0.0;
  27.127 +    momWhale.v = 3.0;
  27.128 +
  27.129 +    babyWhale.x = 60000.0;
  27.130 +    babyWhale.y = -2000.0;
  27.131 +    babyWhale.z = -2000.0;
  27.132 +    babyWhale.psi = 90.0;
  27.133 +    babyWhale.theta = 0.0;
  27.134 +    babyWhale.v = 3.0;
  27.135 +}
  27.136 +
  27.137 +void
  27.138 +Atlantis_Init(void)
  27.139 +{
  27.140 +    static float ambient[] = {0.2, 0.2, 0.2, 1.0};
  27.141 +    static float diffuse[] = {1.0, 1.0, 1.0, 1.0};
  27.142 +    static float position[] = {0.0, 1.0, 0.0, 0.0};
  27.143 +    static float mat_shininess[] = {90.0};
  27.144 +    static float mat_specular[] = {0.8, 0.8, 0.8, 1.0};
  27.145 +    static float mat_diffuse[] = {0.46, 0.66, 0.795, 1.0};
  27.146 +    static float mat_ambient[] = {0.3, 0.4, 0.5, 1.0};
  27.147 +    static float lmodel_ambient[] = {0.4, 0.4, 0.4, 1.0};
  27.148 +    static float lmodel_localviewer[] = {0.0};
  27.149 +    //GLfloat map1[4] = {0.0, 0.0, 0.0, 0.0};
  27.150 +    //GLfloat map2[4] = {0.0, 0.0, 0.0, 0.0};
  27.151 +    static float fog_color[] = {0.0, 0.5, 0.9, 1.0};
  27.152 +
  27.153 +    glFrontFace(GL_CCW);
  27.154 +
  27.155 +    glDepthFunc(GL_LESS);
  27.156 +    glEnable(GL_DEPTH_TEST);
  27.157 +
  27.158 +    glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
  27.159 +    glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
  27.160 +    glLightfv(GL_LIGHT0, GL_POSITION, position);
  27.161 +    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
  27.162 +    glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_localviewer);
  27.163 +    glEnable(GL_LIGHTING);
  27.164 +    glEnable(GL_LIGHT0);
  27.165 +
  27.166 +    glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
  27.167 +    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
  27.168 +    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse);
  27.169 +    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient);
  27.170 +
  27.171 +    InitFishs();
  27.172 +
  27.173 +    glEnable(GL_FOG);
  27.174 +	glFogi(GL_FOG_MODE, GL_EXP);
  27.175 +	glFogf(GL_FOG_DENSITY, 0.0000025);
  27.176 +	glFogfv(GL_FOG_COLOR, fog_color);
  27.177 +
  27.178 +    glClearColor(0.0, 0.5, 0.9, 1.0);
  27.179 +}
  27.180 +
  27.181 +void
  27.182 +Atlantis_Reshape(int width, int height)
  27.183 +{
  27.184 +	w_win = width;
  27.185 +	h_win = height;
  27.186 +	
  27.187 +    glViewport(0, 0, width, height);
  27.188 +
  27.189 +    glMatrixMode(GL_PROJECTION);
  27.190 +    glLoadIdentity();
  27.191 +    gluPerspective(60.0, (GLfloat) width / (GLfloat) height, 20000.0, 300000.0);
  27.192 +    glMatrixMode(GL_MODELVIEW);
  27.193 +}
  27.194 +
  27.195 +void
  27.196 +Atlantis_Animate(void)
  27.197 +{
  27.198 +    int i;
  27.199 +
  27.200 +    for (i = 0; i < NUM_SHARKS; i++) {
  27.201 +        SharkPilot(&sharks[i]);
  27.202 +        SharkMiss(i);
  27.203 +    }
  27.204 +    WhalePilot(&dolph);
  27.205 +    dolph.phi++;
  27.206 +    //glutPostRedisplay();
  27.207 +    WhalePilot(&momWhale);
  27.208 +    momWhale.phi++;
  27.209 +    WhalePilot(&babyWhale);
  27.210 +    babyWhale.phi++;
  27.211 +}
  27.212 +
  27.213 +void
  27.214 +Atlantis_Key(unsigned char key, int x, int y)
  27.215 +{
  27.216 +    switch (key) {
  27.217 +    case 't':
  27.218 +    	Timing = !Timing;
  27.219 +    break;
  27.220 +    case ' ':
  27.221 +    	switch(StrMode)
  27.222 +    	{
  27.223 +		    case GL_EXTENSIONS:
  27.224 +    			StrMode = GL_VENDOR;
  27.225 +		    break;
  27.226 +		    case GL_VENDOR:
  27.227 +		    	StrMode = GL_RENDERER;
  27.228 +		    break;
  27.229 +		    case GL_RENDERER:
  27.230 +		    	StrMode = GL_VERSION;
  27.231 +		    break;
  27.232 +		    case GL_VERSION:
  27.233 +		    	StrMode = GL_EXTENSIONS;
  27.234 +		    break;
  27.235 +		}
  27.236 +	break;
  27.237 +    case 27:           /* Esc will quit */
  27.238 +        exit(1);
  27.239 +    break;
  27.240 +    case 's':             		/* "s" start animation */
  27.241 +        moving = GL_TRUE;
  27.242 +        //glutIdleFunc(Animate);
  27.243 +    break;
  27.244 +    case 'a':          			/* "a" stop animation */
  27.245 +        moving = GL_FALSE;
  27.246 +        //glutIdleFunc(NULL);
  27.247 +    break;
  27.248 +    case '.':          			/* "." will advance frame */
  27.249 +        if (!moving) {
  27.250 +            Atlantis_Animate();
  27.251 +        }
  27.252 +    }
  27.253 +}
  27.254 +/*
  27.255 +void Display(void)
  27.256 +{
  27.257 +	static float P123[3] = {-448.94, -203.14, 9499.60};
  27.258 +	static float P124[3] = {-442.64, -185.20, 9528.07};
  27.259 +	static float P125[3] = {-441.07, -148.05, 9528.07};
  27.260 +	static float P126[3] = {-443.43, -128.84, 9499.60};
  27.261 +	static float P127[3] = {-456.87, -146.78, 9466.67};
  27.262 +	static float P128[3] = {-453.68, -183.93, 9466.67};
  27.263 +
  27.264 +	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  27.265 +	
  27.266 +	glPushMatrix();
  27.267 +    FishTransform(&dolph);
  27.268 +    DrawDolphin(&dolph);
  27.269 +    glPopMatrix();
  27.270 + 
  27.271 +	glutSwapBuffers();
  27.272 +}
  27.273 +*/
  27.274 +
  27.275 +void
  27.276 +Atlantis_Display(void)
  27.277 +{
  27.278 +    int i;
  27.279 +    static double th[4] = {0.0, 0.0, 0.0, 0.0};
  27.280 +	static double t1 = 0.0, t2 = 0.0, t;
  27.281 +	char num_str[128];
  27.282 +    
  27.283 +    t1 = t2;
  27.284 +
  27.285 +    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  27.286 +
  27.287 +    for (i = 0; i < NUM_SHARKS; i++) {
  27.288 +        glPushMatrix();
  27.289 +        FishTransform(&sharks[i]);
  27.290 +        DrawShark(&sharks[i]);
  27.291 +        glPopMatrix();
  27.292 +    }
  27.293 +
  27.294 +    glPushMatrix();
  27.295 +    FishTransform(&dolph);
  27.296 +    DrawDolphin(&dolph);
  27.297 +    glPopMatrix();
  27.298 +
  27.299 +    glPushMatrix();
  27.300 +    FishTransform(&momWhale);
  27.301 +    DrawWhale(&momWhale);
  27.302 +    glPopMatrix();
  27.303 +
  27.304 +    glPushMatrix();
  27.305 +    FishTransform(&babyWhale);
  27.306 +    glScalef(0.45, 0.45, 0.3);
  27.307 +    DrawWhale(&babyWhale);
  27.308 +    glPopMatrix();
  27.309 +    
  27.310 +    if(Timing)
  27.311 +    {
  27.312 +		t2 = mtime();
  27.313 +		t = t2 - t1;
  27.314 +		if(t > 0.0001) t = 1.0 / t;
  27.315 +		
  27.316 +		glDisable(GL_LIGHTING);
  27.317 +		//glDisable(GL_DEPTH_TEST);
  27.318 +		
  27.319 +		glColor3f(1.0, 0.0, 0.0);
  27.320 +		
  27.321 +		glMatrixMode (GL_PROJECTION);
  27.322 +		glPushMatrix();
  27.323 +		glLoadIdentity();
  27.324 +		glOrtho(0, w_win, 0, h_win, -10.0, 10.0);
  27.325 +		
  27.326 +		glRasterPos2f(5.0, 5.0);
  27.327 +		
  27.328 +		switch(StrMode)
  27.329 +		{
  27.330 +			case GL_VENDOR:
  27.331 +				sprintf(num_str, "%0.2f Hz, %dx%d, VENDOR: ", filter(t, th), w_win, h_win);
  27.332 +				DrawStr(num_str);
  27.333 +				DrawStr(glGetString(GL_VENDOR));
  27.334 +			break;
  27.335 +			case GL_RENDERER:
  27.336 +				sprintf(num_str, "%0.2f Hz, %dx%d, RENDERER: ", filter(t, th), w_win, h_win);
  27.337 +				DrawStr(num_str);
  27.338 +				DrawStr(glGetString(GL_RENDERER));
  27.339 +			break;
  27.340 +			case GL_VERSION:
  27.341 +				sprintf(num_str, "%0.2f Hz, %dx%d, VERSION: ", filter(t, th), w_win, h_win);
  27.342 +				DrawStr(num_str);
  27.343 +				DrawStr(glGetString(GL_VERSION));
  27.344 +			break;
  27.345 +			case GL_EXTENSIONS:
  27.346 +				sprintf(num_str, "%0.2f Hz, %dx%d, EXTENSIONS: ", filter(t, th), w_win, h_win);
  27.347 +				DrawStr(num_str);
  27.348 +				DrawStr(glGetString(GL_EXTENSIONS));
  27.349 +			break;
  27.350 +		}
  27.351 +		
  27.352 +		glPopMatrix();
  27.353 +		glMatrixMode(GL_MODELVIEW);
  27.354 +		
  27.355 +		glEnable(GL_LIGHTING);
  27.356 +		//glEnable(GL_DEPTH_TEST);
  27.357 +	}
  27.358 +	
  27.359 +    count++;
  27.360 +
  27.361 +    glutSwapBuffers();
  27.362 +}
  27.363 +
  27.364 +/*
  27.365 +void
  27.366 +Visible(int state)
  27.367 +{
  27.368 +    if (state == GLUT_VISIBLE) {
  27.369 +        if (moving)
  27.370 +            glutIdleFunc(Animate);
  27.371 +    } else {
  27.372 +        if (moving)
  27.373 +            glutIdleFunc(NULL);
  27.374 +    }
  27.375 +}
  27.376 +
  27.377 +
  27.378 +void
  27.379 +timingSelect(int value)
  27.380 +{
  27.381 +    switch(value)
  27.382 +    {
  27.383 +		case 1:
  27.384 +			StrMode = GL_VENDOR;
  27.385 +		break;
  27.386 +		case 2:
  27.387 +			StrMode = GL_RENDERER;
  27.388 +		break;
  27.389 +		case 3:
  27.390 +			StrMode = GL_VERSION;
  27.391 +		break;
  27.392 +		case 4:
  27.393 +			StrMode = GL_EXTENSIONS;
  27.394 +		break;
  27.395 +    }
  27.396 +}
  27.397 +
  27.398 +void
  27.399 +menuSelect(int value)
  27.400 +{
  27.401 +    switch (value) {
  27.402 +    case 1:
  27.403 +        moving = GL_TRUE;
  27.404 +        glutIdleFunc(Animate);
  27.405 +        break;
  27.406 +    case 2:
  27.407 +        moving = GL_FALSE;
  27.408 +        glutIdleFunc(NULL);
  27.409 +        break;
  27.410 +    case 4:
  27.411 +        exit(0);
  27.412 +        break;
  27.413 +    }
  27.414 +}
  27.415 +
  27.416 +int
  27.417 +main(int argc, char **argv)
  27.418 +{
  27.419 +	GLboolean fullscreen = GL_FALSE; 
  27.420 +	GLint time_menu;
  27.421 + 	
  27.422 + 	srand(0);
  27.423 +
  27.424 +        glutInit(&argc, argv);
  27.425 +	if (argc > 1 && !strcmp(argv[1], "-w"))
  27.426 +		fullscreen = GL_FALSE;
  27.427 +
  27.428 +	//glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
  27.429 +	glutInitDisplayString("rgba double depth=24");
  27.430 +	if (fullscreen) {
  27.431 +	  glutGameModeString("1024x768:32");
  27.432 +	  glutEnterGameMode();
  27.433 +	} else {
  27.434 +	  glutInitWindowSize(320, 240);
  27.435 +	  glutCreateWindow("Atlantis Timing");
  27.436 +	}
  27.437 +    Init();
  27.438 +    glutDisplayFunc(Display);
  27.439 +    glutReshapeFunc(Reshape);
  27.440 +    glutKeyboardFunc(Key);
  27.441 +    moving = GL_TRUE;
  27.442 +glutIdleFunc(Animate);
  27.443 +    glutVisibilityFunc(Visible);
  27.444 +    
  27.445 +    time_menu = glutCreateMenu(timingSelect);
  27.446 +    glutAddMenuEntry("GL_VENDOR", 1);
  27.447 +    glutAddMenuEntry("GL_RENDERER", 2);
  27.448 +    glutAddMenuEntry("GL_VERSION", 3);
  27.449 +    glutAddMenuEntry("GL_EXTENSIONS", 4);
  27.450 +    
  27.451 +    glutCreateMenu(menuSelect);
  27.452 +    glutAddMenuEntry("Start motion", 1);
  27.453 +    glutAddMenuEntry("Stop motion", 2);
  27.454 +    glutAddSubMenu("Timing Mode", time_menu);
  27.455 +    glutAddMenuEntry("Quit", 4);
  27.456 +    
  27.457 +    //glutAttachMenu(GLUT_RIGHT_BUTTON);
  27.458 +    glutAttachMenu(GLUT_RIGHT_BUTTON);
  27.459 +    glutMainLoop();
  27.460 +    return 0;             // ANSI C requires main to return int.
  27.461 +}
  27.462 +*/
  27.463 \ No newline at end of file
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/atlantis.h	Tue Sep 29 07:59:23 2009 +0000
    28.3 @@ -0,0 +1,65 @@
    28.4 +/**
    28.5 + * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
    28.6 + * ALL RIGHTS RESERVED
    28.7 + * Permission to use, copy, modify, and distribute this software for
    28.8 + * any purpose and without fee is hereby granted, provided that the above
    28.9 + * copyright notice appear in all copies and that both the copyright notice
   28.10 + * and this permission notice appear in supporting documentation, and that
   28.11 + * the name of Silicon Graphics, Inc. not be used in advertising
   28.12 + * or publicity pertaining to distribution of the software without specific,
   28.13 + * written prior permission.
   28.14 + *
   28.15 + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
   28.16 + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
   28.17 + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
   28.18 + * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
   28.19 + * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
   28.20 + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
   28.21 + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
   28.22 + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
   28.23 + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
   28.24 + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
   28.25 + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
   28.26 + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
   28.27 + *
   28.28 + * US Government Users Restricted Rights
   28.29 + * Use, duplication, or disclosure by the Government is subject to
   28.30 + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
   28.31 + * (c)(1)(ii) of the Rights in Technical Data and Computer Software
   28.32 + * clause at DFARS 252.227-7013 and/or in similar or successor
   28.33 + * clauses in the FAR or the DOD or NASA FAR Supplement.
   28.34 + * Unpublished-- rights reserved under the copyright laws of the
   28.35 + * United States.  Contractor/manufacturer is Silicon Graphics,
   28.36 + * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
   28.37 + *
   28.38 + * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
   28.39 + */
   28.40 +#define RAD 57.295
   28.41 +#define RRAD 0.01745
   28.42 +
   28.43 +#define NUM_SHARKS 4
   28.44 +#define SHARKSIZE 6000
   28.45 +#define SHARKSPEED 100.0
   28.46 +
   28.47 +#define WHALESPEED 250.0
   28.48 +
   28.49 +typedef struct _fishRec {
   28.50 +    float x, y, z, phi, theta, psi, v;
   28.51 +    float xt, yt, zt;
   28.52 +    float htail, vtail;
   28.53 +    float dtheta;
   28.54 +    int spurt, attack;
   28.55 +} fishRec;
   28.56 +
   28.57 +extern fishRec sharks[NUM_SHARKS];
   28.58 +extern fishRec momWhale;
   28.59 +extern fishRec babyWhale;
   28.60 +extern fishRec dolph;
   28.61 +
   28.62 +extern void FishTransform(fishRec *);
   28.63 +extern void WhalePilot(fishRec *);
   28.64 +extern void SharkPilot(fishRec *);
   28.65 +extern void SharkMiss(int);
   28.66 +extern void DrawWhale(fishRec *);
   28.67 +extern void DrawShark(fishRec *);
   28.68 +extern void DrawDolphin(fishRec *);
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/dolphin.c	Tue Sep 29 07:59:23 2009 +0000
    29.3 @@ -0,0 +1,1934 @@
    29.4 +/**
    29.5 + * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
    29.6 + * ALL RIGHTS RESERVED
    29.7 + * Permission to use, copy, modify, and distribute this software for
    29.8 + * any purpose and without fee is hereby granted, provided that the above
    29.9 + * copyright notice appear in all copies and that both the copyright notice
   29.10 + * and this permission notice appear in supporting documentation, and that
   29.11 + * the name of Silicon Graphics, Inc. not be used in advertising
   29.12 + * or publicity pertaining to distribution of the software without specific,
   29.13 + * written prior permission.
   29.14 + *
   29.15 + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
   29.16 + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
   29.17 + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
   29.18 + * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
   29.19 + * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
   29.20 + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
   29.21 + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
   29.22 + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
   29.23 + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
   29.24 + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
   29.25 + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
   29.26 + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
   29.27 + *
   29.28 + * US Government Users Restricted Rights
   29.29 + * Use, duplication, or disclosure by the Government is subject to
   29.30 + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
   29.31 + * (c)(1)(ii) of the Rights in Technical Data and Computer Software
   29.32 + * clause at DFARS 252.227-7013 and/or in similar or successor
   29.33 + * clauses in the FAR or the DOD or NASA FAR Supplement.
   29.34 + * Unpublished-- rights reserved under the copyright laws of the
   29.35 + * United States.  Contractor/manufacturer is Silicon Graphics,
   29.36 + * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
   29.37 + *
   29.38 + * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
   29.39 + */
   29.40 +#include <math.h>
   29.41 +#include <GLUT/glut.h>
   29.42 +#include "atlantis.h"
   29.43 +/* *INDENT-OFF* */
   29.44 +static float N001[3] = {-0.005937 ,-0.101998 ,-0.994767};
   29.45 +static float N002[3] = {0.936780 ,-0.200803 ,0.286569};
   29.46 +static float N003[3] = {-0.233062 ,0.972058 ,0.028007};
   29.47 +static float N005[3] = {0.898117 ,0.360171 ,0.252315};
   29.48 +static float N006[3] = {-0.915437 ,0.348456 ,0.201378};
   29.49 +static float N007[3] = {0.602263 ,-0.777527 ,0.180920};
   29.50 +static float N008[3] = {-0.906912 ,-0.412015 ,0.088061};
   29.51 +static float N012[3] = {0.884408 ,-0.429417 ,-0.182821};
   29.52 +static float N013[3] = {0.921121 ,0.311084 ,-0.234016};
   29.53 +static float N014[3] = {0.382635 ,0.877882 ,-0.287948};
   29.54 +static float N015[3] = {-0.380046 ,0.888166 ,-0.258316};
   29.55 +static float N016[3] = {-0.891515 ,0.392238 ,-0.226607};
   29.56 +static float N017[3] = {-0.901419 ,-0.382002 ,-0.203763};
   29.57 +static float N018[3] = {-0.367225 ,-0.911091 ,-0.187243};
   29.58 +static float N019[3] = {0.339539 ,-0.924846 ,-0.171388};
   29.59 +static float N020[3] = {0.914706 ,-0.378617 ,-0.141290};
   29.60 +static float N021[3] = {0.950662 ,0.262713 ,-0.164994};
   29.61 +static float N022[3] = {0.546359 ,0.801460 ,-0.243218};
   29.62 +static float N023[3] = {-0.315796 ,0.917068 ,-0.243431};
   29.63 +static float N024[3] = {-0.825687 ,0.532277 ,-0.186875};
   29.64 +static float N025[3] = {-0.974763 ,-0.155232 ,-0.160435};
   29.65 +static float N026[3] = {-0.560596 ,-0.816658 ,-0.137119};
   29.66 +static float N027[3] = {0.380210 ,-0.910817 ,-0.160786};
   29.67 +static float N028[3] = {0.923772 ,-0.358322 ,-0.135093};
   29.68 +static float N029[3] = {0.951202 ,0.275053 ,-0.139859};
   29.69 +static float N030[3] = {0.686099 ,0.702548 ,-0.188932};
   29.70 +static float N031[3] = {-0.521865 ,0.826719 ,-0.210220};
   29.71 +static float N032[3] = {-0.923820 ,0.346739 ,-0.162258};
   29.72 +static float N033[3] = {-0.902095 ,-0.409995 ,-0.134646};
   29.73 +static float N034[3] = {-0.509115 ,-0.848498 ,-0.144404};
   29.74 +static float N035[3] = {0.456469 ,-0.880293 ,-0.129305};
   29.75 +static float N036[3] = {0.873401 ,-0.475489 ,-0.105266};
   29.76 +static float N037[3] = {0.970825 ,0.179861 ,-0.158584};
   29.77 +static float N038[3] = {0.675609 ,0.714187 ,-0.183004};
   29.78 +static float N039[3] = {-0.523574 ,0.830212 ,-0.191360};
   29.79 +static float N040[3] = {-0.958895 ,0.230808 ,-0.165071};
   29.80 +static float N041[3] = {-0.918285 ,-0.376803 ,-0.121542};
   29.81 +static float N042[3] = {-0.622467 ,-0.774167 ,-0.114888};
   29.82 +static float N043[3] = {0.404497 ,-0.908807 ,-0.102231};
   29.83 +static float N044[3] = {0.930538 ,-0.365155 ,-0.027588};
   29.84 +static float N045[3] = {0.921920 ,0.374157 ,-0.100345};
   29.85 +static float N046[3] = {0.507346 ,0.860739 ,0.041562};
   29.86 +static float N047[3] = {-0.394646 ,0.918815 ,-0.005730};
   29.87 +static float N048[3] = {-0.925411 ,0.373024 ,-0.066837};
   29.88 +static float N049[3] = {-0.945337 ,-0.322309 ,-0.049551};
   29.89 +static float N050[3] = {-0.660437 ,-0.750557 ,-0.022072};
   29.90 +static float N051[3] = {0.488835 ,-0.871950 ,-0.027261};
   29.91 +static float N052[3] = {0.902599 ,-0.421397 ,0.087969};
   29.92 +static float N053[3] = {0.938636 ,0.322606 ,0.122020};
   29.93 +static float N054[3] = {0.484605 ,0.871078 ,0.079878};
   29.94 +static float N055[3] = {-0.353607 ,0.931559 ,0.084619};
   29.95 +static float N056[3] = {-0.867759 ,0.478564 ,0.134054};
   29.96 +static float N057[3] = {-0.951583 ,-0.296030 ,0.082794};
   29.97 +static float N058[3] = {-0.672355 ,-0.730209 ,0.121384};
   29.98 +static float N059[3] = {0.528336 ,-0.842452 ,0.105525};
   29.99 +static float N060[3] = {0.786913 ,-0.564760 ,0.248627};
  29.100 +static float N062[3] = {0.622098 ,0.765230 ,0.165584};
  29.101 +static float N063[3] = {-0.631711 ,0.767816 ,0.106773};
  29.102 +static float N064[3] = {-0.687886 ,0.606351 ,0.398938};
  29.103 +static float N065[3] = {-0.946327 ,-0.281623 ,0.158598};
  29.104 +static float N066[3] = {-0.509549 ,-0.860437 ,0.002776};
  29.105 +static float N067[3] = {0.462594 ,-0.876692 ,0.131977};
  29.106 +static float N071[3] = {0.000000 ,1.000000 ,0.000000};
  29.107 +static float N077[3] = {-0.880770 ,0.461448 ,0.106351};
  29.108 +static float N078[3] = {-0.880770 ,0.461448 ,0.106351};
  29.109 +static float N079[3] = {-0.880770 ,0.461448 ,0.106351};
  29.110 +static float N080[3] = {-0.880770 ,0.461448 ,0.106351};
  29.111 +static float N081[3] = {-0.571197 ,0.816173 ,0.087152};
  29.112 +static float N082[3] = {-0.880770 ,0.461448 ,0.106351};
  29.113 +static float N083[3] = {-0.571197 ,0.816173 ,0.087152};
  29.114 +static float N084[3] = {-0.571197 ,0.816173 ,0.087152};
  29.115 +static float N085[3] = {-0.880770 ,0.461448 ,0.106351};
  29.116 +static float N086[3] = {-0.571197 ,0.816173 ,0.087152};
  29.117 +static float N087[3] = {-0.880770 ,0.461448 ,0.106351};
  29.118 +static float N088[3] = {-0.880770 ,0.461448 ,0.106351};
  29.119 +static float N089[3] = {-0.880770 ,0.461448 ,0.106351};
  29.120 +static float N090[3] = {-0.880770 ,0.461448 ,0.106351};
  29.121 +static float N091[3] = {0.000000 ,1.000000 ,0.000000};
  29.122 +static float N092[3] = {0.000000 ,1.000000 ,0.000000};
  29.123 +static float N093[3] = {0.000000 ,1.000000 ,0.000000};
  29.124 +static float N094[3] = {1.000000 ,0.000000 ,0.000000};
  29.125 +static float N095[3] = {-1.000000 ,0.000000 ,0.000000};
  29.126 +static float N097[3] = {-0.697296 ,0.702881 ,0.140491};
  29.127 +static float N098[3] = {0.918864 ,0.340821 ,0.198819};
  29.128 +static float N099[3] = {-0.932737 ,0.201195 ,0.299202};
  29.129 +static float N100[3] = {0.029517 ,0.981679 ,0.188244};
  29.130 +static float N102[3] = {0.813521 ,-0.204936 ,0.544229};
  29.131 +static float N110[3] = {-0.781480 ,-0.384779 ,0.491155};
  29.132 +static float N111[3] = {-0.722243 ,0.384927 ,0.574627};
  29.133 +static float N112[3] = {-0.752278 ,0.502679 ,0.425901};
  29.134 +static float N113[3] = {0.547257 ,0.367910 ,0.751766};
  29.135 +static float N114[3] = {0.725949 ,-0.232568 ,0.647233};
  29.136 +static float N115[3] = {-0.747182 ,-0.660786 ,0.071280};
  29.137 +static float N116[3] = {0.931519 ,0.200748 ,0.303270};
  29.138 +static float N117[3] = {-0.828928 ,0.313757 ,0.463071};
  29.139 +static float N118[3] = {0.902554 ,-0.370967 ,0.218587};
  29.140 +static float N119[3] = {-0.879257 ,-0.441851 ,0.177973};
  29.141 +static float N120[3] = {0.642327 ,0.611901 ,0.461512};
  29.142 +static float N121[3] = {0.964817 ,-0.202322 ,0.167910};
  29.143 +static float N122[3] = {0.000000 ,1.000000 ,0.000000};
  29.144 +static float P001[3] = {5.68, -300.95, 1324.70};
  29.145 +static float P002[3] = {338.69, -219.63, 9677.03};
  29.146 +static float P003[3] = {12.18, 474.59, 9138.14};
  29.147 +static float P005[3] = {487.51, 198.05, 9350.78};
  29.148 +static float P006[3] = {-457.61, 68.74, 9427.85};
  29.149 +static float P007[3] = {156.52, -266.72, 10311.68};
  29.150 +static float P008[3] = {-185.56, -266.51, 10310.47};
  29.151 +static float P009[3] = {124.39, -261.46, 1942.34};
  29.152 +static float P010[3] = {-130.05, -261.46, 1946.03};
  29.153 +static float P011[3] = {141.07, -320.11, 1239.38};
  29.154 +static float P012[3] = {156.48, -360.12, 2073.41};
  29.155 +static float P013[3] = {162.00, -175.88, 2064.44};
  29.156 +static float P014[3] = {88.16, -87.72, 2064.02};
  29.157 +static float P015[3] = {-65.21, -96.13, 2064.02};
  29.158 +static float P016[3] = {-156.48, -180.96, 2064.44};
  29.159 +static float P017[3] = {-162.00, -368.93, 2082.39};
  29.160 +static float P018[3] = {-88.16, -439.22, 2082.39};
  29.161 +static float P019[3] = {65.21, -440.32, 2083.39};
  29.162 +static float P020[3] = {246.87, -356.02, 2576.95};
  29.163 +static float P021[3] = {253.17, -111.15, 2567.15};
  29.164 +static float P022[3] = {132.34, 51.41, 2559.84};
  29.165 +static float P023[3] = {-97.88, 40.44, 2567.15};
  29.166 +static float P024[3] = {-222.97, -117.49, 2567.15};
  29.167 +static float P025[3] = {-252.22, -371.53, 2569.92};
  29.168 +static float P026[3] = {-108.44, -518.19, 2586.75};
  29.169 +static float P027[3] = {97.88, -524.79, 2586.75};
  29.170 +static float P028[3] = {370.03, -421.19, 3419.70};
  29.171 +static float P029[3] = {351.15, -16.98, 3423.17};
  29.172 +static float P030[3] = {200.66, 248.46, 3430.37};
  29.173 +static float P031[3] = {-148.42, 235.02, 3417.91};
  29.174 +static float P032[3] = {-360.21, -30.27, 3416.84};
  29.175 +static float P033[3] = {-357.90, -414.89, 3407.04};
  29.176 +static float P034[3] = {-148.88, -631.35, 3409.90};
  29.177 +static float P035[3] = {156.38, -632.59, 3419.70};
  29.178 +static float P036[3] = {462.61, -469.21, 4431.51};
  29.179 +static float P037[3] = {466.60, 102.25, 4434.98};
  29.180 +static float P038[3] = {243.05, 474.34, 4562.02};
  29.181 +static float P039[3] = {-191.23, 474.40, 4554.42};
  29.182 +static float P040[3] = {-476.12, 111.05, 4451.11};
  29.183 +static float P041[3] = {-473.36, -470.74, 4444.78};
  29.184 +static float P042[3] = {-266.95, -748.41, 4447.78};
  29.185 +static float P043[3] = {211.14, -749.91, 4429.73};
  29.186 +static float P044[3] = {680.57, -370.27, 5943.46};
  29.187 +static float P045[3] = {834.01, 363.09, 6360.63};
  29.188 +static float P046[3] = {371.29, 804.51, 6486.26};
  29.189 +static float P047[3] = {-291.43, 797.22, 6494.28};
  29.190 +static float P048[3] = {-784.13, 370.75, 6378.01};
  29.191 +static float P049[3] = {-743.29, -325.82, 5943.46};
  29.192 +static float P050[3] = {-383.24, -804.77, 5943.46};
  29.193 +static float P051[3] = {283.47, -846.09, 5943.46};
  29.194 +static float iP001[3] = {5.68, -300.95, 1324.70};
  29.195 +static float iP009[3] = {124.39, -261.46, 1942.34};
  29.196 +static float iP010[3] = {-130.05, -261.46, 1946.03};
  29.197 +static float iP011[3] = {141.07, -320.11, 1239.38};
  29.198 +static float iP012[3] = {156.48, -360.12, 2073.41};
  29.199 +static float iP013[3] = {162.00, -175.88, 2064.44};
  29.200 +static float iP014[3] = {88.16, -87.72, 2064.02};
  29.201 +static float iP015[3] = {-65.21, -96.13, 2064.02};
  29.202 +static float iP016[3] = {-156.48, -180.96, 2064.44};
  29.203 +static float iP017[3] = {-162.00, -368.93, 2082.39};
  29.204 +static float iP018[3] = {-88.16, -439.22, 2082.39};
  29.205 +static float iP019[3] = {65.21, -440.32, 2083.39};
  29.206 +static float iP020[3] = {246.87, -356.02, 2576.95};
  29.207 +static float iP021[3] = {253.17, -111.15, 2567.15};
  29.208 +static float iP022[3] = {132.34, 51.41, 2559.84};
  29.209 +static float iP023[3] = {-97.88, 40.44, 2567.15};
  29.210 +static float iP024[3] = {-222.97, -117.49, 2567.15};
  29.211 +static float iP025[3] = {-252.22, -371.53, 2569.92};
  29.212 +static float iP026[3] = {-108.44, -518.19, 2586.75};
  29.213 +static float iP027[3] = {97.88, -524.79, 2586.75};
  29.214 +static float iP028[3] = {370.03, -421.19, 3419.70};
  29.215 +static float iP029[3] = {351.15, -16.98, 3423.17};
  29.216 +static float iP030[3] = {200.66, 248.46, 3430.37};
  29.217 +static float iP031[3] = {-148.42, 235.02, 3417.91};
  29.218 +static float iP032[3] = {-360.21, -30.27, 3416.84};
  29.219 +static float iP033[3] = {-357.90, -414.89, 3407.04};
  29.220 +static float iP034[3] = {-148.88, -631.35, 3409.90};
  29.221 +static float iP035[3] = {156.38, -632.59, 3419.70};
  29.222 +static float iP036[3] = {462.61, -469.21, 4431.51};
  29.223 +static float iP037[3] = {466.60, 102.25, 4434.98};
  29.224 +static float iP038[3] = {243.05, 474.34, 4562.02};
  29.225 +static float iP039[3] = {-191.23, 474.40, 4554.42};
  29.226 +static float iP040[3] = {-476.12, 111.05, 4451.11};
  29.227 +static float iP041[3] = {-473.36, -470.74, 4444.78};
  29.228 +static float iP042[3] = {-266.95, -748.41, 4447.78};
  29.229 +static float iP043[3] = {211.14, -749.91, 4429.73};
  29.230 +static float iP044[3] = {680.57, -370.27, 5943.46};
  29.231 +static float iP045[3] = {834.01, 363.09, 6360.63};
  29.232 +static float iP046[3] = {371.29, 804.51, 6486.26};
  29.233 +static float iP047[3] = {-291.43, 797.22, 6494.28};
  29.234 +static float iP048[3] = {-784.13, 370.75, 6378.01};
  29.235 +static float iP049[3] = {-743.29, -325.82, 5943.46};
  29.236 +static float iP050[3] = {-383.24, -804.77, 5943.46};
  29.237 +static float iP051[3] = {283.47, -846.09, 5943.46};
  29.238 +static float P052[3] = {599.09, -300.15, 7894.03};
  29.239 +static float P053[3] = {735.48, 306.26, 7911.92};
  29.240 +static float P054[3] = {246.22, 558.53, 8460.50};
  29.241 +static float P055[3] = {-230.41, 559.84, 8473.23};
  29.242 +static float P056[3] = {-698.66, 320.83, 7902.59};
  29.243 +static float P057[3] = {-643.29, -299.16, 7902.59};
  29.244 +static float P058[3] = {-341.47, -719.30, 7902.59};
  29.245 +static float P059[3] = {252.57, -756.12, 7902.59};
  29.246 +static float P060[3] = {458.39, -265.31, 9355.44};
  29.247 +static float P062[3] = {224.04, 338.75, 9450.30};
  29.248 +static float P063[3] = {-165.71, 341.04, 9462.35};
  29.249 +static float P064[3] = {-298.11, 110.13, 10180.37};
  29.250 +static float P065[3] = {-473.99, -219.71, 9355.44};
  29.251 +static float P066[3] = {-211.97, -479.87, 9355.44};
  29.252 +static float P067[3] = {192.86, -491.45, 9348.73};
  29.253 +static float P068[3] = {-136.29, -319.84, 1228.73};
  29.254 +static float P069[3] = {1111.17, -314.14, 1314.19};
  29.255 +static float P070[3] = {-1167.34, -321.61, 1319.45};
  29.256 +static float P071[3] = {1404.86, -306.66, 1235.45};
  29.257 +static float P072[3] = {-1409.73, -314.14, 1247.66};
  29.258 +static float P073[3] = {1254.01, -296.87, 1544.58};
  29.259 +static float P074[3] = {-1262.09, -291.70, 1504.26};
  29.260 +static float P075[3] = {965.71, -269.26, 1742.65};
  29.261 +static float P076[3] = {-900.97, -276.74, 1726.07};
  29.262 +static float iP068[3] = {-136.29, -319.84, 1228.73};
  29.263 +static float iP069[3] = {1111.17, -314.14, 1314.19};
  29.264 +static float iP070[3] = {-1167.34, -321.61, 1319.45};
  29.265 +static float iP071[3] = {1404.86, -306.66, 1235.45};
  29.266 +static float iP072[3] = {-1409.73, -314.14, 1247.66};
  29.267 +static float iP073[3] = {1254.01, -296.87, 1544.58};
  29.268 +static float iP074[3] = {-1262.09, -291.70, 1504.26};
  29.269 +static float iP075[3] = {965.71, -269.26, 1742.65};
  29.270 +static float iP076[3] = {-900.97, -276.74, 1726.07};
  29.271 +static float P077[3] = {1058.00, -448.81, 8194.66};
  29.272 +static float P078[3] = {-1016.51, -456.43, 8190.62};
  29.273 +static float P079[3] = {-1515.96, -676.45, 7754.93};
  29.274 +static float P080[3] = {1856.75, -830.34, 7296.56};
  29.275 +static float P081[3] = {1472.16, -497.38, 7399.68};
  29.276 +static float P082[3] = {-1775.26, -829.51, 7298.46};
  29.277 +static float P083[3] = {911.09, -252.51, 7510.99};
  29.278 +static float P084[3] = {-1451.94, -495.62, 7384.30};
  29.279 +static float P085[3] = {1598.75, -669.26, 7769.90};
  29.280 +static float P086[3] = {-836.53, -250.08, 7463.25};
  29.281 +static float P087[3] = {722.87, -158.18, 8006.41};
  29.282 +static float P088[3] = {-688.86, -162.28, 7993.89};
  29.283 +static float P089[3] = {-626.92, -185.30, 8364.98};
  29.284 +static float P090[3] = {647.72, -189.46, 8354.99};
  29.285 +static float P091[3] = {0.00, 835.01, 5555.62};
  29.286 +static float P092[3] = {0.00, 1350.18, 5220.86};
  29.287 +static float P093[3] = {0.00, 1422.94, 5285.27};
  29.288 +static float P094[3] = {0.00, 1296.75, 5650.19};
  29.289 +static float P095[3] = {0.00, 795.63, 6493.88};
  29.290 +static float iP091[3] = {0.00, 835.01, 5555.62};
  29.291 +static float iP092[3] = {0.00, 1350.18, 5220.86};
  29.292 +static float iP093[3] = {0.00, 1422.94, 5285.27};
  29.293 +static float iP094[3] = {0.00, 1296.75, 5650.19};
  29.294 +static float iP095[3] = {0.00, 795.63, 6493.88};
  29.295 +static float P097[3] = {-194.91, -357.14, 10313.32};
  29.296 +static float P098[3] = {135.35, -357.66, 10307.94};
  29.297 +static float iP097[3] = {-194.91, -357.14, 10313.32};
  29.298 +static float iP098[3] = {135.35, -357.66, 10307.94};
  29.299 +static float P099[3] = {-380.53, -221.14, 9677.98};
  29.300 +static float P100[3] = {0.00, 412.99, 9629.33};
  29.301 +static float P102[3] = {59.51, -412.55, 10677.58};
  29.302 +static float iP102[3] = {59.51, -412.55, 10677.58};
  29.303 +static float P103[3] = {6.50, 484.74, 9009.94};
  29.304 +static float P105[3] = {-41.86, 476.51, 9078.17};
  29.305 +static float P108[3] = {49.20, 476.83, 9078.24};
  29.306 +static float P110[3] = {-187.62, -410.04, 10674.12};
  29.307 +static float iP110[3] = {-187.62, -410.04, 10674.12};
  29.308 +static float P111[3] = {-184.25, -318.70, 10723.88};
  29.309 +static float iP111[3] = {-184.25, -318.70, 10723.88};
  29.310 +static float P112[3] = {-179.61, -142.81, 10670.26};
  29.311 +static float P113[3] = {57.43, -147.94, 10675.26};
  29.312 +static float P114[3] = {54.06, -218.90, 10712.44};
  29.313 +static float P115[3] = {-186.35, -212.09, 10713.76};
  29.314 +static float P116[3] = {205.90, -84.61, 10275.97};
  29.315 +static float P117[3] = {-230.96, -83.26, 10280.09};
  29.316 +static float iP118[3] = {216.78, -509.17, 10098.94};
  29.317 +static float iP119[3] = {-313.21, -510.79, 10102.62};
  29.318 +static float P118[3] = {216.78, -509.17, 10098.94};
  29.319 +static float P119[3] = {-313.21, -510.79, 10102.62};
  29.320 +static float P120[3] = {217.95, 96.34, 10161.62};
  29.321 +static float P121[3] = {71.99, -319.74, 10717.70};
  29.322 +static float iP121[3] = {71.99, -319.74, 10717.70};
  29.323 +static float P122[3] = {0.00, 602.74, 5375.84};
  29.324 +static float iP122[3] = {0.00, 602.74, 5375.84};
  29.325 +static float P123[3] = {-448.94, -203.14, 9499.60};
  29.326 +static float P124[3] = {-442.64, -185.20, 9528.07};
  29.327 +static float P125[3] = {-441.07, -148.05, 9528.07};
  29.328 +static float P126[3] = {-443.43, -128.84, 9499.60};
  29.329 +static float P127[3] = {-456.87, -146.78, 9466.67};
  29.330 +static float P128[3] = {-453.68, -183.93, 9466.67};
  29.331 +static float P129[3] = {428.43, -124.08, 9503.03};
  29.332 +static float P130[3] = {419.73, -142.14, 9534.56};
  29.333 +static float P131[3] = {419.92, -179.96, 9534.56};
  29.334 +static float P132[3] = {431.20, -199.73, 9505.26};
  29.335 +static float P133[3] = {442.28, -181.67, 9475.96};
  29.336 +static float P134[3] = {442.08, -143.84, 9475.96};
  29.337 +/* *INDENT-ON* */
  29.338 +
  29.339 +void
  29.340 +Dolphin001(void)
  29.341 +{
  29.342 +    glNormal3fv(N071);
  29.343 +    glBegin(GL_POLYGON);
  29.344 +    glVertex3fv(P001);
  29.345 +    glVertex3fv(P068);
  29.346 +    glVertex3fv(P010);
  29.347 +    glEnd();
  29.348 +    glBegin(GL_POLYGON);
  29.349 +    glVertex3fv(P068);
  29.350 +    glVertex3fv(P076);
  29.351 +    glVertex3fv(P010);
  29.352 +    glEnd();
  29.353 +    glBegin(GL_POLYGON);
  29.354 +    glVertex3fv(P068);
  29.355 +    glVertex3fv(P070);
  29.356 +    glVertex3fv(P076);
  29.357 +    glEnd();
  29.358 +    glBegin(GL_POLYGON);
  29.359 +    glVertex3fv(P076);
  29.360 +    glVertex3fv(P070);
  29.361 +    glVertex3fv(P074);
  29.362 +    glEnd();
  29.363 +    glBegin(GL_POLYGON);
  29.364 +    glVertex3fv(P070);
  29.365 +    glVertex3fv(P072);
  29.366 +    glVertex3fv(P074);
  29.367 +    glEnd();
  29.368 +    glNormal3fv(N119);
  29.369 +    glBegin(GL_POLYGON);
  29.370 +    glVertex3fv(P072);
  29.371 +    glVertex3fv(P070);
  29.372 +    glVertex3fv(P074);
  29.373 +    glEnd();
  29.374 +    glBegin(GL_POLYGON);
  29.375 +    glVertex3fv(P074);
  29.376 +    glVertex3fv(P070);
  29.377 +    glVertex3fv(P076);
  29.378 +    glEnd();
  29.379 +    glBegin(GL_POLYGON);
  29.380 +    glVertex3fv(P070);
  29.381 +    glVertex3fv(P068);
  29.382 +    glVertex3fv(P076);
  29.383 +    glEnd();
  29.384 +    glBegin(GL_POLYGON);
  29.385 +    glVertex3fv(P076);
  29.386 +    glVertex3fv(P068);
  29.387 +    glVertex3fv(P010);
  29.388 +    glEnd();
  29.389 +    glBegin(GL_POLYGON);
  29.390 +    glVertex3fv(P068);
  29.391 +    glVertex3fv(P001);
  29.392 +    glVertex3fv(P010);
  29.393 +    glEnd();
  29.394 +}
  29.395 +
  29.396 +void
  29.397 +Dolphin002(void)
  29.398 +{
  29.399 +    glNormal3fv(N071);
  29.400 +    glBegin(GL_POLYGON);
  29.401 +    glVertex3fv(P011);
  29.402 +    glVertex3fv(P001);
  29.403 +    glVertex3fv(P009);
  29.404 +    glEnd();
  29.405 +    glBegin(GL_POLYGON);
  29.406 +    glVertex3fv(P075);
  29.407 +    glVertex3fv(P011);
  29.408 +    glVertex3fv(P009);
  29.409 +    glEnd();
  29.410 +    glBegin(GL_POLYGON);
  29.411 +    glVertex3fv(P069);
  29.412 +    glVertex3fv(P011);
  29.413 +    glVertex3fv(P075);
  29.414 +    glEnd();
  29.415 +    glBegin(GL_POLYGON);
  29.416 +    glVertex3fv(P069);
  29.417 +    glVertex3fv(P075);
  29.418 +    glVertex3fv(P073);
  29.419 +    glEnd();
  29.420 +    glBegin(GL_POLYGON);
  29.421 +    glVertex3fv(P071);
  29.422 +    glVertex3fv(P069);
  29.423 +    glVertex3fv(P073);
  29.424 +    glEnd();
  29.425 +    glNormal3fv(N119);
  29.426 +    glBegin(GL_POLYGON);
  29.427 +    glVertex3fv(P001);
  29.428 +    glVertex3fv(P011);
  29.429 +    glVertex3fv(P009);
  29.430 +    glEnd();
  29.431 +    glBegin(GL_POLYGON);
  29.432 +    glVertex3fv(P009);
  29.433 +    glVertex3fv(P011);
  29.434 +    glVertex3fv(P075);
  29.435 +    glEnd();
  29.436 +    glBegin(GL_POLYGON);
  29.437 +    glVertex3fv(P011);
  29.438 +    glVertex3fv(P069);
  29.439 +    glVertex3fv(P075);
  29.440 +    glEnd();
  29.441 +    glBegin(GL_POLYGON);
  29.442 +    glVertex3fv(P069);
  29.443 +    glVertex3fv(P073);
  29.444 +    glVertex3fv(P075);
  29.445 +    glEnd();
  29.446 +    glBegin(GL_POLYGON);
  29.447 +    glVertex3fv(P069);
  29.448 +    glVertex3fv(P071);
  29.449 +    glVertex3fv(P073);
  29.450 +    glEnd();
  29.451 +}
  29.452 +
  29.453 +void
  29.454 +Dolphin003(void)
  29.455 +{
  29.456 +    glBegin(GL_POLYGON);
  29.457 +    glNormal3fv(N018);
  29.458 +    glVertex3fv(P018);
  29.459 +    glNormal3fv(N001);
  29.460 +    glVertex3fv(P001);
  29.461 +    glNormal3fv(N019);
  29.462 +    glVertex3fv(P019);
  29.463 +    glEnd();
  29.464 +    glBegin(GL_POLYGON);
  29.465 +    glNormal3fv(N019);
  29.466 +    glVertex3fv(P019);
  29.467 +    glNormal3fv(N001);
  29.468 +    glVertex3fv(P001);
  29.469 +    glNormal3fv(N012);
  29.470 +    glVertex3fv(P012);
  29.471 +    glEnd();
  29.472 +    glBegin(GL_POLYGON);
  29.473 +    glNormal3fv(N017);
  29.474 +    glVertex3fv(P017);
  29.475 +    glNormal3fv(N001);
  29.476 +    glVertex3fv(P001);
  29.477 +    glNormal3fv(N018);
  29.478 +    glVertex3fv(P018);
  29.479 +    glEnd();
  29.480 +    glBegin(GL_POLYGON);
  29.481 +    glNormal3fv(N001);
  29.482 +    glVertex3fv(P001);
  29.483 +    glNormal3fv(N017);
  29.484 +    glVertex3fv(P017);
  29.485 +    glNormal3fv(N016);
  29.486 +    glVertex3fv(P016);
  29.487 +    glEnd();
  29.488 +    glBegin(GL_POLYGON);
  29.489 +    glNormal3fv(N001);
  29.490 +    glVertex3fv(P001);
  29.491 +    glNormal3fv(N013);
  29.492 +    glVertex3fv(P013);
  29.493 +    glNormal3fv(N012);
  29.494 +    glVertex3fv(P012);
  29.495 +    glEnd();
  29.496 +    glBegin(GL_POLYGON);
  29.497 +    glNormal3fv(N001);
  29.498 +    glVertex3fv(P001);
  29.499 +    glNormal3fv(N016);
  29.500 +    glVertex3fv(P016);
  29.501 +    glNormal3fv(N015);
  29.502 +    glVertex3fv(P015);
  29.503 +    glEnd();
  29.504 +    glBegin(GL_POLYGON);
  29.505 +    glNormal3fv(N001);
  29.506 +    glVertex3fv(P001);
  29.507 +    glNormal3fv(N014);
  29.508 +    glVertex3fv(P014);
  29.509 +    glNormal3fv(N013);
  29.510 +    glVertex3fv(P013);
  29.511 +    glEnd();
  29.512 +    glBegin(GL_POLYGON);
  29.513 +    glNormal3fv(N001);
  29.514 +    glVertex3fv(P001);
  29.515 +    glNormal3fv(N015);
  29.516 +    glVertex3fv(P015);
  29.517 +    glNormal3fv(N014);
  29.518 +    glVertex3fv(P014);
  29.519 +    glEnd();
  29.520 +}
  29.521 +
  29.522 +void
  29.523 +Dolphin004(void)
  29.524 +{
  29.525 +    glBegin(GL_POLYGON);
  29.526 +    glNormal3fv(N014);
  29.527 +    glVertex3fv(P014);
  29.528 +    glNormal3fv(N015);
  29.529 +    glVertex3fv(P015);
  29.530 +    glNormal3fv(N023);
  29.531 +    glVertex3fv(P023);
  29.532 +    glNormal3fv(N022);
  29.533 +    glVertex3fv(P022);
  29.534 +    glEnd();
  29.535 +    glBegin(GL_POLYGON);
  29.536 +    glNormal3fv(N015);
  29.537 +    glVertex3fv(P015);
  29.538 +    glNormal3fv(N016);
  29.539 +    glVertex3fv(P016);
  29.540 +    glNormal3fv(N024);
  29.541 +    glVertex3fv(P024);
  29.542 +    glNormal3fv(N023);
  29.543 +    glVertex3fv(P023);
  29.544 +    glEnd();
  29.545 +    glBegin(GL_POLYGON);
  29.546 +    glNormal3fv(N016);
  29.547 +    glVertex3fv(P016);
  29.548 +    glNormal3fv(N017);
  29.549 +    glVertex3fv(P017);
  29.550 +    glNormal3fv(N025);
  29.551 +    glVertex3fv(P025);
  29.552 +    glNormal3fv(N024);
  29.553 +    glVertex3fv(P024);
  29.554 +    glEnd();
  29.555 +    glBegin(GL_POLYGON);
  29.556 +    glNormal3fv(N017);
  29.557 +    glVertex3fv(P017);
  29.558 +    glNormal3fv(N018);
  29.559 +    glVertex3fv(P018);
  29.560 +    glNormal3fv(N026);
  29.561 +    glVertex3fv(P026);
  29.562 +    glNormal3fv(N025);
  29.563 +    glVertex3fv(P025);
  29.564 +    glEnd();
  29.565 +    glBegin(GL_POLYGON);
  29.566 +    glNormal3fv(N013);
  29.567 +    glVertex3fv(P013);
  29.568 +    glNormal3fv(N014);
  29.569 +    glVertex3fv(P014);
  29.570 +    glNormal3fv(N022);
  29.571 +    glVertex3fv(P022);
  29.572 +    glNormal3fv(N021);
  29.573 +    glVertex3fv(P021);
  29.574 +    glEnd();
  29.575 +    glBegin(GL_POLYGON);
  29.576 +    glNormal3fv(N012);
  29.577 +    glVertex3fv(P012);
  29.578 +    glNormal3fv(N013);
  29.579 +    glVertex3fv(P013);
  29.580 +    glNormal3fv(N021);
  29.581 +    glVertex3fv(P021);
  29.582 +    glNormal3fv(N020);
  29.583 +    glVertex3fv(P020);
  29.584 +    glEnd();
  29.585 +    glBegin(GL_POLYGON);
  29.586 +    glNormal3fv(N018);
  29.587 +    glVertex3fv(P018);
  29.588 +    glNormal3fv(N019);
  29.589 +    glVertex3fv(P019);
  29.590 +    glNormal3fv(N027);
  29.591 +    glVertex3fv(P027);
  29.592 +    glNormal3fv(N026);
  29.593 +    glVertex3fv(P026);
  29.594 +    glEnd();
  29.595 +    glBegin(GL_POLYGON);
  29.596 +    glNormal3fv(N019);
  29.597 +    glVertex3fv(P019);
  29.598 +    glNormal3fv(N012);
  29.599 +    glVertex3fv(P012);
  29.600 +    glNormal3fv(N020);
  29.601 +    glVertex3fv(P020);
  29.602 +    glNormal3fv(N027);
  29.603 +    glVertex3fv(P027);
  29.604 +    glEnd();
  29.605 +}
  29.606 +
  29.607 +void
  29.608 +Dolphin005(void)
  29.609 +{
  29.610 +    glBegin(GL_POLYGON);
  29.611 +    glNormal3fv(N022);
  29.612 +    glVertex3fv(P022);
  29.613 +    glNormal3fv(N023);
  29.614 +    glVertex3fv(P023);
  29.615 +    glNormal3fv(N031);
  29.616 +    glVertex3fv(P031);
  29.617 +    glNormal3fv(N030);
  29.618 +    glVertex3fv(P030);
  29.619 +    glEnd();
  29.620 +    glBegin(GL_POLYGON);
  29.621 +    glNormal3fv(N021);
  29.622 +    glVertex3fv(P021);
  29.623 +    glNormal3fv(N022);
  29.624 +    glVertex3fv(P022);
  29.625 +    glNormal3fv(N030);
  29.626 +    glVertex3fv(P030);
  29.627 +    glEnd();
  29.628 +    glBegin(GL_POLYGON);
  29.629 +    glNormal3fv(N021);
  29.630 +    glVertex3fv(P021);
  29.631 +    glNormal3fv(N030);
  29.632 +    glVertex3fv(P030);
  29.633 +    glNormal3fv(N029);
  29.634 +    glVertex3fv(P029);
  29.635 +    glEnd();
  29.636 +    glBegin(GL_POLYGON);
  29.637 +    glNormal3fv(N023);
  29.638 +    glVertex3fv(P023);
  29.639 +    glNormal3fv(N024);
  29.640 +    glVertex3fv(P024);
  29.641 +    glNormal3fv(N031);
  29.642 +    glVertex3fv(P031);
  29.643 +    glEnd();
  29.644 +    glBegin(GL_POLYGON);
  29.645 +    glNormal3fv(N024);
  29.646 +    glVertex3fv(P024);
  29.647 +    glNormal3fv(N032);
  29.648 +    glVertex3fv(P032);
  29.649 +    glNormal3fv(N031);
  29.650 +    glVertex3fv(P031);
  29.651 +    glEnd();
  29.652 +    glBegin(GL_POLYGON);
  29.653 +    glNormal3fv(N024);
  29.654 +    glVertex3fv(P024);
  29.655 +    glNormal3fv(N025);
  29.656 +    glVertex3fv(P025);
  29.657 +    glNormal3fv(N032);
  29.658 +    glVertex3fv(P032);
  29.659 +    glEnd();
  29.660 +    glBegin(GL_POLYGON);
  29.661 +    glNormal3fv(N025);
  29.662 +    glVertex3fv(P025);
  29.663 +    glNormal3fv(N033);
  29.664 +    glVertex3fv(P033);
  29.665 +    glNormal3fv(N032);
  29.666 +    glVertex3fv(P032);
  29.667 +    glEnd();
  29.668 +    glBegin(GL_POLYGON);
  29.669 +    glNormal3fv(N020);
  29.670 +    glVertex3fv(P020);
  29.671 +    glNormal3fv(N021);
  29.672 +    glVertex3fv(P021);
  29.673 +    glNormal3fv(N029);
  29.674 +    glVertex3fv(P029);
  29.675 +    glEnd();
  29.676 +    glBegin(GL_POLYGON);
  29.677 +    glNormal3fv(N020);
  29.678 +    glVertex3fv(P020);
  29.679 +    glNormal3fv(N029);
  29.680 +    glVertex3fv(P029);
  29.681 +    glNormal3fv(N028);
  29.682 +    glVertex3fv(P028);
  29.683 +    glEnd();
  29.684 +    glBegin(GL_POLYGON);
  29.685 +    glNormal3fv(N027);
  29.686 +    glVertex3fv(P027);
  29.687 +    glNormal3fv(N020);
  29.688 +    glVertex3fv(P020);
  29.689 +    glNormal3fv(N028);
  29.690 +    glVertex3fv(P028);
  29.691 +    glEnd();
  29.692 +    glBegin(GL_POLYGON);
  29.693 +    glNormal3fv(N027);
  29.694 +    glVertex3fv(P027);
  29.695 +    glNormal3fv(N028);
  29.696 +    glVertex3fv(P028);
  29.697 +    glNormal3fv(N035);
  29.698 +    glVertex3fv(P035);
  29.699 +    glEnd();
  29.700 +    glBegin(GL_POLYGON);
  29.701 +    glNormal3fv(N025);
  29.702 +    glVertex3fv(P025);
  29.703 +    glNormal3fv(N026);
  29.704 +    glVertex3fv(P026);
  29.705 +    glNormal3fv(N033);
  29.706 +    glVertex3fv(P033);
  29.707 +    glEnd();
  29.708 +    glBegin(GL_POLYGON);
  29.709 +    glNormal3fv(N033);
  29.710 +    glVertex3fv(P033);
  29.711 +    glNormal3fv(N026);
  29.712 +    glVertex3fv(P026);
  29.713 +    glNormal3fv(N034);
  29.714 +    glVertex3fv(P034);
  29.715 +    glEnd();
  29.716 +    glBegin(GL_POLYGON);
  29.717 +    glNormal3fv(N026);
  29.718 +    glVertex3fv(P026);
  29.719 +    glNormal3fv(N027);
  29.720 +    glVertex3fv(P027);
  29.721 +    glNormal3fv(N035);
  29.722 +    glVertex3fv(P035);
  29.723 +    glNormal3fv(N034);
  29.724 +    glVertex3fv(P034);
  29.725 +    glEnd();
  29.726 +}
  29.727 +
  29.728 +void
  29.729 +Dolphin006(void)
  29.730 +{
  29.731 +    glBegin(GL_POLYGON);
  29.732 +    glNormal3fv(N092);
  29.733 +    glVertex3fv(P092);
  29.734 +    glNormal3fv(N093);
  29.735 +    glVertex3fv(P093);
  29.736 +    glNormal3fv(N094);
  29.737 +    glVertex3fv(P094);
  29.738 +    glEnd();
  29.739 +    glBegin(GL_POLYGON);
  29.740 +    glNormal3fv(N093);
  29.741 +    glVertex3fv(P093);
  29.742 +    glNormal3fv(N092);
  29.743 +    glVertex3fv(P092);
  29.744 +    glNormal3fv(N094);
  29.745 +    glVertex3fv(P094);
  29.746 +    glEnd();
  29.747 +    glBegin(GL_POLYGON);
  29.748 +    glNormal3fv(N092);
  29.749 +    glVertex3fv(P092);
  29.750 +    glNormal3fv(N091);
  29.751 +    glVertex3fv(P091);
  29.752 +    glNormal3fv(N095);
  29.753 +    glVertex3fv(P095);
  29.754 +    glNormal3fv(N094);
  29.755 +    glVertex3fv(P094);
  29.756 +    glEnd();
  29.757 +    glBegin(GL_POLYGON);
  29.758 +    glNormal3fv(N091);
  29.759 +    glVertex3fv(P091);
  29.760 +    glNormal3fv(N092);
  29.761 +    glVertex3fv(P092);
  29.762 +    glNormal3fv(N094);
  29.763 +    glVertex3fv(P094);
  29.764 +    glNormal3fv(N095);
  29.765 +    glVertex3fv(P095);
  29.766 +    glEnd();
  29.767 +    glBegin(GL_POLYGON);
  29.768 +    glNormal3fv(N122);
  29.769 +    glVertex3fv(P122);
  29.770 +    glNormal3fv(N095);
  29.771 +    glVertex3fv(P095);
  29.772 +    glNormal3fv(N091);
  29.773 +    glVertex3fv(P091);
  29.774 +    glEnd();
  29.775 +    glBegin(GL_POLYGON);
  29.776 +    glNormal3fv(N122);
  29.777 +    glVertex3fv(P122);
  29.778 +    glNormal3fv(N091);
  29.779 +    glVertex3fv(P091);
  29.780 +    glNormal3fv(N095);
  29.781 +    glVertex3fv(P095);
  29.782 +    glEnd();
  29.783 +}
  29.784 +
  29.785 +void
  29.786 +Dolphin007(void)
  29.787 +{
  29.788 +    glBegin(GL_POLYGON);
  29.789 +    glNormal3fv(N030);
  29.790 +    glVertex3fv(P030);
  29.791 +    glNormal3fv(N031);
  29.792 +    glVertex3fv(P031);
  29.793 +    glNormal3fv(N039);
  29.794 +    glVertex3fv(P039);
  29.795 +    glNormal3fv(N038);
  29.796 +    glVertex3fv(P038);
  29.797 +    glEnd();
  29.798 +    glBegin(GL_POLYGON);
  29.799 +    glNormal3fv(N029);
  29.800 +    glVertex3fv(P029);
  29.801 +    glNormal3fv(N030);
  29.802 +    glVertex3fv(P030);
  29.803 +    glNormal3fv(N038);
  29.804 +    glVertex3fv(P038);
  29.805 +    glEnd();
  29.806 +    glBegin(GL_POLYGON);
  29.807 +    glNormal3fv(N029);
  29.808 +    glVertex3fv(P029);
  29.809 +    glNormal3fv(N038);
  29.810 +    glVertex3fv(P038);
  29.811 +    glNormal3fv(N037);
  29.812 +    glVertex3fv(P037);
  29.813 +    glEnd();
  29.814 +    glBegin(GL_POLYGON);
  29.815 +    glNormal3fv(N028);
  29.816 +    glVertex3fv(P028);
  29.817 +    glNormal3fv(N029);
  29.818 +    glVertex3fv(P029);
  29.819 +    glNormal3fv(N037);
  29.820 +    glVertex3fv(P037);
  29.821 +    glEnd();
  29.822 +    glBegin(GL_POLYGON);
  29.823 +    glNormal3fv(N028);
  29.824 +    glVertex3fv(P028);
  29.825 +    glNormal3fv(N037);
  29.826 +    glVertex3fv(P037);
  29.827 +    glNormal3fv(N036);
  29.828 +    glVertex3fv(P036);
  29.829 +    glEnd();
  29.830 +    glBegin(GL_POLYGON);
  29.831 +    glNormal3fv(N035);
  29.832 +    glVertex3fv(P035);
  29.833 +    glNormal3fv(N028);
  29.834 +    glVertex3fv(P028);
  29.835 +    glNormal3fv(N036);
  29.836 +    glVertex3fv(P036);
  29.837 +    glEnd();
  29.838 +    glBegin(GL_POLYGON);
  29.839 +    glNormal3fv(N035);
  29.840 +    glVertex3fv(P035);
  29.841 +    glNormal3fv(N036);
  29.842 +    glVertex3fv(P036);
  29.843 +    glNormal3fv(N043);
  29.844 +    glVertex3fv(P043);
  29.845 +    glEnd();
  29.846 +    glBegin(GL_POLYGON);
  29.847 +    glNormal3fv(N034);
  29.848 +    glVertex3fv(P034);
  29.849 +    glNormal3fv(N035);
  29.850 +    glVertex3fv(P035);
  29.851 +    glNormal3fv(N043);
  29.852 +    glVertex3fv(P043);
  29.853 +    glNormal3fv(N042);
  29.854 +    glVertex3fv(P042);
  29.855 +    glEnd();
  29.856 +    glBegin(GL_POLYGON);
  29.857 +    glNormal3fv(N033);
  29.858 +    glVertex3fv(P033);
  29.859 +    glNormal3fv(N034);
  29.860 +    glVertex3fv(P034);
  29.861 +    glNormal3fv(N042);
  29.862 +    glVertex3fv(P042);
  29.863 +    glEnd();
  29.864 +    glBegin(GL_POLYGON);
  29.865 +    glNormal3fv(N033);
  29.866 +    glVertex3fv(P033);
  29.867 +    glNormal3fv(N042);
  29.868 +    glVertex3fv(P042);
  29.869 +    glNormal3fv(N041);
  29.870 +    glVertex3fv(P041);
  29.871 +    glEnd();
  29.872 +    glBegin(GL_POLYGON);
  29.873 +    glNormal3fv(N031);
  29.874 +    glVertex3fv(P031);
  29.875 +    glNormal3fv(N032);
  29.876 +    glVertex3fv(P032);
  29.877 +    glNormal3fv(N039);
  29.878 +    glVertex3fv(P039);
  29.879 +    glEnd();
  29.880 +    glBegin(GL_POLYGON);
  29.881 +    glNormal3fv(N039);
  29.882 +    glVertex3fv(P039);
  29.883 +    glNormal3fv(N032);
  29.884 +    glVertex3fv(P032);
  29.885 +    glNormal3fv(N040);
  29.886 +    glVertex3fv(P040);
  29.887 +    glEnd();
  29.888 +    glBegin(GL_POLYGON);
  29.889 +    glNormal3fv(N032);
  29.890 +    glVertex3fv(P032);
  29.891 +    glNormal3fv(N033);
  29.892 +    glVertex3fv(P033);
  29.893 +    glNormal3fv(N040);
  29.894 +    glVertex3fv(P040);
  29.895 +    glEnd();
  29.896 +    glBegin(GL_POLYGON);
  29.897 +    glNormal3fv(N040);
  29.898 +    glVertex3fv(P040);
  29.899 +    glNormal3fv(N033);
  29.900 +    glVertex3fv(P033);
  29.901 +    glNormal3fv(N041);
  29.902 +    glVertex3fv(P041);
  29.903 +    glEnd();
  29.904 +}
  29.905 +
  29.906 +void
  29.907 +Dolphin008(void)
  29.908 +{
  29.909 +    glBegin(GL_POLYGON);
  29.910 +    glNormal3fv(N042);
  29.911 +    glVertex3fv(P042);
  29.912 +    glNormal3fv(N043);
  29.913 +    glVertex3fv(P043);
  29.914 +    glNormal3fv(N051);
  29.915 +    glVertex3fv(P051);
  29.916 +    glNormal3fv(N050);
  29.917 +    glVertex3fv(P050);
  29.918 +    glEnd();
  29.919 +    glBegin(GL_POLYGON);
  29.920 +    glNormal3fv(N043);
  29.921 +    glVertex3fv(P043);
  29.922 +    glNormal3fv(N036);
  29.923 +    glVertex3fv(P036);
  29.924 +    glNormal3fv(N051);
  29.925 +    glVertex3fv(P051);
  29.926 +    glEnd();
  29.927 +    glBegin(GL_POLYGON);
  29.928 +    glNormal3fv(N051);
  29.929 +    glVertex3fv(P051);
  29.930 +    glNormal3fv(N036);
  29.931 +    glVertex3fv(P036);
  29.932 +    glNormal3fv(N044);
  29.933 +    glVertex3fv(P044);
  29.934 +    glEnd();
  29.935 +    glBegin(GL_POLYGON);
  29.936 +    glNormal3fv(N041);
  29.937 +    glVertex3fv(P041);
  29.938 +    glNormal3fv(N042);
  29.939 +    glVertex3fv(P042);
  29.940 +    glNormal3fv(N050);
  29.941 +    glVertex3fv(P050);
  29.942 +    glEnd();
  29.943 +    glBegin(GL_POLYGON);
  29.944 +    glNormal3fv(N041);
  29.945 +    glVertex3fv(P041);
  29.946 +    glNormal3fv(N050);
  29.947 +    glVertex3fv(P050);
  29.948 +    glNormal3fv(N049);
  29.949 +    glVertex3fv(P049);
  29.950 +    glEnd();
  29.951 +    glBegin(GL_POLYGON);
  29.952 +    glNormal3fv(N036);
  29.953 +    glVertex3fv(P036);
  29.954 +    glNormal3fv(N037);
  29.955 +    glVertex3fv(P037);
  29.956 +    glNormal3fv(N044);
  29.957 +    glVertex3fv(P044);
  29.958 +    glEnd();
  29.959 +    glBegin(GL_POLYGON);
  29.960 +    glNormal3fv(N044);
  29.961 +    glVertex3fv(P044);
  29.962 +    glNormal3fv(N037);
  29.963 +    glVertex3fv(P037);
  29.964 +    glNormal3fv(N045);
  29.965 +    glVertex3fv(P045);
  29.966 +    glEnd();
  29.967 +    glBegin(GL_POLYGON);
  29.968 +    glNormal3fv(N040);
  29.969 +    glVertex3fv(P040);
  29.970 +    glNormal3fv(N041);
  29.971 +    glVertex3fv(P041);
  29.972 +    glNormal3fv(N049);
  29.973 +    glVertex3fv(P049);
  29.974 +    glEnd();
  29.975 +    glBegin(GL_POLYGON);
  29.976 +    glNormal3fv(N040);
  29.977 +    glVertex3fv(P040);
  29.978 +    glNormal3fv(N049);
  29.979 +    glVertex3fv(P049);
  29.980 +    glNormal3fv(N048);
  29.981 +    glVertex3fv(P048);
  29.982 +    glEnd();
  29.983 +    glBegin(GL_POLYGON);
  29.984 +    glNormal3fv(N039);
  29.985 +    glVertex3fv(P039);
  29.986 +    glNormal3fv(N040);
  29.987 +    glVertex3fv(P040);
  29.988 +    glNormal3fv(N048);
  29.989 +    glVertex3fv(P048);
  29.990 +    glEnd();
  29.991 +    glBegin(GL_POLYGON);
  29.992 +    glNormal3fv(N039);
  29.993 +    glVertex3fv(P039);
  29.994 +    glNormal3fv(N048);
  29.995 +    glVertex3fv(P048);
  29.996 +    glNormal3fv(N047);
  29.997 +    glVertex3fv(P047);
  29.998 +    glEnd();
  29.999 +    glBegin(GL_POLYGON);
 29.1000 +    glNormal3fv(N037);
 29.1001 +    glVertex3fv(P037);
 29.1002 +    glNormal3fv(N038);
 29.1003 +    glVertex3fv(P038);
 29.1004 +    glNormal3fv(N045);
 29.1005 +    glVertex3fv(P045);
 29.1006 +    glEnd();
 29.1007 +    glBegin(GL_POLYGON);
 29.1008 +    glNormal3fv(N038);
 29.1009 +    glVertex3fv(P038);
 29.1010 +    glNormal3fv(N046);
 29.1011 +    glVertex3fv(P046);
 29.1012 +    glNormal3fv(N045);
 29.1013 +    glVertex3fv(P045);
 29.1014 +    glEnd();
 29.1015 +    glBegin(GL_POLYGON);
 29.1016 +    glNormal3fv(N038);
 29.1017 +    glVertex3fv(P038);
 29.1018 +    glNormal3fv(N039);
 29.1019 +    glVertex3fv(P039);
 29.1020 +    glNormal3fv(N047);
 29.1021 +    glVertex3fv(P047);
 29.1022 +    glNormal3fv(N046);
 29.1023 +    glVertex3fv(P046);
 29.1024 +    glEnd();
 29.1025 +}
 29.1026 +
 29.1027 +void
 29.1028 +Dolphin009(void)
 29.1029 +{
 29.1030 +    glBegin(GL_POLYGON);
 29.1031 +    glNormal3fv(N050);
 29.1032 +    glVertex3fv(P050);
 29.1033 +    glNormal3fv(N051);
 29.1034 +    glVertex3fv(P051);
 29.1035 +    glNormal3fv(N059);
 29.1036 +    glVertex3fv(P059);
 29.1037 +    glNormal3fv(N058);
 29.1038 +    glVertex3fv(P058);
 29.1039 +    glEnd();
 29.1040 +    glBegin(GL_POLYGON);
 29.1041 +    glNormal3fv(N051);
 29.1042 +    glVertex3fv(P051);
 29.1043 +    glNormal3fv(N044);
 29.1044 +    glVertex3fv(P044);
 29.1045 +    glNormal3fv(N059);
 29.1046 +    glVertex3fv(P059);
 29.1047 +    glEnd();
 29.1048 +    glBegin(GL_POLYGON);
 29.1049 +    glNormal3fv(N059);
 29.1050 +    glVertex3fv(P059);
 29.1051 +    glNormal3fv(N044);
 29.1052 +    glVertex3fv(P044);
 29.1053 +    glNormal3fv(N052);
 29.1054 +    glVertex3fv(P052);
 29.1055 +    glEnd();
 29.1056 +    glBegin(GL_POLYGON);
 29.1057 +    glNormal3fv(N044);
 29.1058 +    glVertex3fv(P044);
 29.1059 +    glNormal3fv(N045);
 29.1060 +    glVertex3fv(P045);
 29.1061 +    glNormal3fv(N053);
 29.1062 +    glVertex3fv(P053);
 29.1063 +    glEnd();
 29.1064 +    glBegin(GL_POLYGON);
 29.1065 +    glNormal3fv(N044);
 29.1066 +    glVertex3fv(P044);
 29.1067 +    glNormal3fv(N053);
 29.1068 +    glVertex3fv(P053);
 29.1069 +    glNormal3fv(N052);
 29.1070 +    glVertex3fv(P052);
 29.1071 +    glEnd();
 29.1072 +    glBegin(GL_POLYGON);
 29.1073 +    glNormal3fv(N049);
 29.1074 +    glVertex3fv(P049);
 29.1075 +    glNormal3fv(N050);
 29.1076 +    glVertex3fv(P050);
 29.1077 +    glNormal3fv(N058);
 29.1078 +    glVertex3fv(P058);
 29.1079 +    glEnd();
 29.1080 +    glBegin(GL_POLYGON);
 29.1081 +    glNormal3fv(N049);
 29.1082 +    glVertex3fv(P049);
 29.1083 +    glNormal3fv(N058);
 29.1084 +    glVertex3fv(P058);
 29.1085 +    glNormal3fv(N057);
 29.1086 +    glVertex3fv(P057);
 29.1087 +    glEnd();
 29.1088 +    glBegin(GL_POLYGON);
 29.1089 +    glNormal3fv(N048);
 29.1090 +    glVertex3fv(P048);
 29.1091 +    glNormal3fv(N049);
 29.1092 +    glVertex3fv(P049);
 29.1093 +    glNormal3fv(N057);
 29.1094 +    glVertex3fv(P057);
 29.1095 +    glEnd();
 29.1096 +    glBegin(GL_POLYGON);
 29.1097 +    glNormal3fv(N048);
 29.1098 +    glVertex3fv(P048);
 29.1099 +    glNormal3fv(N057);
 29.1100 +    glVertex3fv(P057);
 29.1101 +    glNormal3fv(N056);
 29.1102 +    glVertex3fv(P056);
 29.1103 +    glEnd();
 29.1104 +    glBegin(GL_POLYGON);
 29.1105 +    glNormal3fv(N047);
 29.1106 +    glVertex3fv(P047);
 29.1107 +    glNormal3fv(N048);
 29.1108 +    glVertex3fv(P048);
 29.1109 +    glNormal3fv(N056);
 29.1110 +    glVertex3fv(P056);
 29.1111 +    glEnd();
 29.1112 +    glBegin(GL_POLYGON);
 29.1113 +    glNormal3fv(N047);
 29.1114 +    glVertex3fv(P047);
 29.1115 +    glNormal3fv(N056);
 29.1116 +    glVertex3fv(P056);
 29.1117 +    glNormal3fv(N055);
 29.1118 +    glVertex3fv(P055);
 29.1119 +    glEnd();
 29.1120 +    glBegin(GL_POLYGON);
 29.1121 +    glNormal3fv(N045);
 29.1122 +    glVertex3fv(P045);
 29.1123 +    glNormal3fv(N046);
 29.1124 +    glVertex3fv(P046);
 29.1125 +    glNormal3fv(N053);
 29.1126 +    glVertex3fv(P053);
 29.1127 +    glEnd();
 29.1128 +    glBegin(GL_POLYGON);
 29.1129 +    glNormal3fv(N046);
 29.1130 +    glVertex3fv(P046);
 29.1131 +    glNormal3fv(N054);
 29.1132 +    glVertex3fv(P054);
 29.1133 +    glNormal3fv(N053);
 29.1134 +    glVertex3fv(P053);
 29.1135 +    glEnd();
 29.1136 +    glBegin(GL_POLYGON);
 29.1137 +    glNormal3fv(N046);
 29.1138 +    glVertex3fv(P046);
 29.1139 +    glNormal3fv(N047);
 29.1140 +    glVertex3fv(P047);
 29.1141 +    glNormal3fv(N055);
 29.1142 +    glVertex3fv(P055);
 29.1143 +    glNormal3fv(N054);
 29.1144 +    glVertex3fv(P054);
 29.1145 +    glEnd();
 29.1146 +}
 29.1147 +
 29.1148 +void
 29.1149 +Dolphin010(void)
 29.1150 +{
 29.1151 +    glBegin(GL_POLYGON);
 29.1152 +    glNormal3fv(N080);
 29.1153 +    glVertex3fv(P080);
 29.1154 +    glNormal3fv(N081);
 29.1155 +    glVertex3fv(P081);
 29.1156 +    glNormal3fv(N085);
 29.1157 +    glVertex3fv(P085);
 29.1158 +    glEnd();
 29.1159 +    glBegin(GL_POLYGON);
 29.1160 +    glNormal3fv(N081);
 29.1161 +    glVertex3fv(P081);
 29.1162 +    glNormal3fv(N083);
 29.1163 +    glVertex3fv(P083);
 29.1164 +    glNormal3fv(N085);
 29.1165 +    glVertex3fv(P085);
 29.1166 +    glEnd();
 29.1167 +    glBegin(GL_POLYGON);
 29.1168 +    glNormal3fv(N085);
 29.1169 +    glVertex3fv(P085);
 29.1170 +    glNormal3fv(N083);
 29.1171 +    glVertex3fv(P083);
 29.1172 +    glNormal3fv(N077);
 29.1173 +    glVertex3fv(P077);
 29.1174 +    glEnd();
 29.1175 +    glBegin(GL_POLYGON);
 29.1176 +    glNormal3fv(N083);
 29.1177 +    glVertex3fv(P083);
 29.1178 +    glNormal3fv(N087);
 29.1179 +    glVertex3fv(P087);
 29.1180 +    glNormal3fv(N077);
 29.1181 +    glVertex3fv(P077);
 29.1182 +    glEnd();
 29.1183 +    glBegin(GL_POLYGON);
 29.1184 +    glNormal3fv(N077);
 29.1185 +    glVertex3fv(P077);
 29.1186 +    glNormal3fv(N087);
 29.1187 +    glVertex3fv(P087);
 29.1188 +    glNormal3fv(N090);
 29.1189 +    glVertex3fv(P090);
 29.1190 +    glEnd();
 29.1191 +    glBegin(GL_POLYGON);
 29.1192 +    glNormal3fv(N081);
 29.1193 +    glVertex3fv(P081);
 29.1194 +    glNormal3fv(N080);
 29.1195 +    glVertex3fv(P080);
 29.1196 +    glNormal3fv(N085);
 29.1197 +    glVertex3fv(P085);
 29.1198 +    glEnd();
 29.1199 +    glBegin(GL_POLYGON);
 29.1200 +    glNormal3fv(N083);
 29.1201 +    glVertex3fv(P083);
 29.1202 +    glNormal3fv(N081);
 29.1203 +    glVertex3fv(P081);
 29.1204 +    glNormal3fv(N085);
 29.1205 +    glVertex3fv(P085);
 29.1206 +    glEnd();
 29.1207 +    glBegin(GL_POLYGON);
 29.1208 +    glNormal3fv(N083);
 29.1209 +    glVertex3fv(P083);
 29.1210 +    glNormal3fv(N085);
 29.1211 +    glVertex3fv(P085);
 29.1212 +    glNormal3fv(N077);
 29.1213 +    glVertex3fv(P077);
 29.1214 +    glEnd();
 29.1215 +    glBegin(GL_POLYGON);
 29.1216 +    glNormal3fv(N087);
 29.1217 +    glVertex3fv(P087);
 29.1218 +    glNormal3fv(N083);
 29.1219 +    glVertex3fv(P083);
 29.1220 +    glNormal3fv(N077);
 29.1221 +    glVertex3fv(P077);
 29.1222 +    glEnd();
 29.1223 +    glBegin(GL_POLYGON);
 29.1224 +    glNormal3fv(N087);
 29.1225 +    glVertex3fv(P087);
 29.1226 +    glNormal3fv(N077);
 29.1227 +    glVertex3fv(P077);
 29.1228 +    glNormal3fv(N090);
 29.1229 +    glVertex3fv(P090);
 29.1230 +    glEnd();
 29.1231 +}
 29.1232 +
 29.1233 +void
 29.1234 +Dolphin011(void)
 29.1235 +{
 29.1236 +    glBegin(GL_POLYGON);
 29.1237 +    glNormal3fv(N082);
 29.1238 +    glVertex3fv(P082);
 29.1239 +    glNormal3fv(N084);
 29.1240 +    glVertex3fv(P084);
 29.1241 +    glNormal3fv(N079);
 29.1242 +    glVertex3fv(P079);
 29.1243 +    glEnd();
 29.1244 +    glBegin(GL_POLYGON);
 29.1245 +    glNormal3fv(N084);
 29.1246 +    glVertex3fv(P084);
 29.1247 +    glNormal3fv(N086);
 29.1248 +    glVertex3fv(P086);
 29.1249 +    glNormal3fv(N079);
 29.1250 +    glVertex3fv(P079);
 29.1251 +    glEnd();
 29.1252 +    glBegin(GL_POLYGON);
 29.1253 +    glNormal3fv(N079);
 29.1254 +    glVertex3fv(P079);
 29.1255 +    glNormal3fv(N086);
 29.1256 +    glVertex3fv(P086);
 29.1257 +    glNormal3fv(N078);
 29.1258 +    glVertex3fv(P078);
 29.1259 +    glEnd();
 29.1260 +    glBegin(GL_POLYGON);
 29.1261 +    glNormal3fv(N086);
 29.1262 +    glVertex3fv(P086);
 29.1263 +    glNormal3fv(N088);
 29.1264 +    glVertex3fv(P088);
 29.1265 +    glNormal3fv(N078);
 29.1266 +    glVertex3fv(P078);
 29.1267 +    glEnd();
 29.1268 +    glBegin(GL_POLYGON);
 29.1269 +    glNormal3fv(N078);
 29.1270 +    glVertex3fv(P078);
 29.1271 +    glNormal3fv(N088);
 29.1272 +    glVertex3fv(P088);
 29.1273 +    glNormal3fv(N089);
 29.1274 +    glVertex3fv(P089);
 29.1275 +    glEnd();
 29.1276 +    glBegin(GL_POLYGON);
 29.1277 +    glNormal3fv(N088);
 29.1278 +    glVertex3fv(P088);
 29.1279 +    glNormal3fv(N086);
 29.1280 +    glVertex3fv(P086);
 29.1281 +    glNormal3fv(N089);
 29.1282 +    glVertex3fv(P089);
 29.1283 +    glEnd();
 29.1284 +    glBegin(GL_POLYGON);
 29.1285 +    glNormal3fv(N089);
 29.1286 +    glVertex3fv(P089);
 29.1287 +    glNormal3fv(N086);
 29.1288 +    glVertex3fv(P086);
 29.1289 +    glNormal3fv(N078);
 29.1290 +    glVertex3fv(P078);
 29.1291 +    glEnd();
 29.1292 +    glBegin(GL_POLYGON);
 29.1293 +    glNormal3fv(N086);
 29.1294 +    glVertex3fv(P086);
 29.1295 +    glNormal3fv(N084);
 29.1296 +    glVertex3fv(P084);
 29.1297 +    glNormal3fv(N078);
 29.1298 +    glVertex3fv(P078);
 29.1299 +    glEnd();
 29.1300 +    glBegin(GL_POLYGON);
 29.1301 +    glNormal3fv(N078);
 29.1302 +    glVertex3fv(P078);
 29.1303 +    glNormal3fv(N084);
 29.1304 +    glVertex3fv(P084);
 29.1305 +    glNormal3fv(N079);
 29.1306 +    glVertex3fv(P079);
 29.1307 +    glEnd();
 29.1308 +    glBegin(GL_POLYGON);
 29.1309 +    glNormal3fv(N084);
 29.1310 +    glVertex3fv(P084);
 29.1311 +    glNormal3fv(N082);
 29.1312 +    glVertex3fv(P082);
 29.1313 +    glNormal3fv(N079);
 29.1314 +    glVertex3fv(P079);
 29.1315 +    glEnd();
 29.1316 +}
 29.1317 +
 29.1318 +void
 29.1319 +Dolphin012(void)
 29.1320 +{
 29.1321 +    glBegin(GL_POLYGON);
 29.1322 +    glNormal3fv(N058);
 29.1323 +    glVertex3fv(P058);
 29.1324 +    glNormal3fv(N059);
 29.1325 +    glVertex3fv(P059);
 29.1326 +    glNormal3fv(N067);
 29.1327 +    glVertex3fv(P067);
 29.1328 +    glNormal3fv(N066);
 29.1329 +    glVertex3fv(P066);
 29.1330 +    glEnd();
 29.1331 +    glBegin(GL_POLYGON);
 29.1332 +    glNormal3fv(N059);
 29.1333 +    glVertex3fv(P059);
 29.1334 +    glNormal3fv(N052);
 29.1335 +    glVertex3fv(P052);
 29.1336 +    glNormal3fv(N060);
 29.1337 +    glVertex3fv(P060);
 29.1338 +    glEnd();
 29.1339 +    glBegin(GL_POLYGON);
 29.1340 +    glNormal3fv(N059);
 29.1341 +    glVertex3fv(P059);
 29.1342 +    glNormal3fv(N060);
 29.1343 +    glVertex3fv(P060);
 29.1344 +    glNormal3fv(N067);
 29.1345 +    glVertex3fv(P067);
 29.1346 +    glEnd();
 29.1347 +    glBegin(GL_POLYGON);
 29.1348 +    glNormal3fv(N058);
 29.1349 +    glVertex3fv(P058);
 29.1350 +    glNormal3fv(N066);
 29.1351 +    glVertex3fv(P066);
 29.1352 +    glNormal3fv(N065);
 29.1353 +    glVertex3fv(P065);
 29.1354 +    glEnd();
 29.1355 +    glBegin(GL_POLYGON);
 29.1356 +    glNormal3fv(N058);
 29.1357 +    glVertex3fv(P058);
 29.1358 +    glNormal3fv(N065);
 29.1359 +    glVertex3fv(P065);
 29.1360 +    glNormal3fv(N057);
 29.1361 +    glVertex3fv(P057);
 29.1362 +    glEnd();
 29.1363 +    glBegin(GL_POLYGON);
 29.1364 +    glNormal3fv(N056);
 29.1365 +    glVertex3fv(P056);
 29.1366 +    glNormal3fv(N057);
 29.1367 +    glVertex3fv(P057);
 29.1368 +    glNormal3fv(N065);
 29.1369 +    glVertex3fv(P065);
 29.1370 +    glEnd();
 29.1371 +    glBegin(GL_POLYGON);
 29.1372 +    glNormal3fv(N056);
 29.1373 +    glVertex3fv(P056);
 29.1374 +    glNormal3fv(N065);
 29.1375 +    glVertex3fv(P065);
 29.1376 +    glNormal3fv(N006);
 29.1377 +    glVertex3fv(P006);
 29.1378 +    glEnd();
 29.1379 +    glBegin(GL_POLYGON);
 29.1380 +    glNormal3fv(N056);
 29.1381 +    glVertex3fv(P056);
 29.1382 +    glNormal3fv(N006);
 29.1383 +    glVertex3fv(P006);
 29.1384 +    glNormal3fv(N063);
 29.1385 +    glVertex3fv(P063);
 29.1386 +    glEnd();
 29.1387 +    glBegin(GL_POLYGON);
 29.1388 +    glNormal3fv(N056);
 29.1389 +    glVertex3fv(P056);
 29.1390 +    glNormal3fv(N063);
 29.1391 +    glVertex3fv(P063);
 29.1392 +    glNormal3fv(N055);
 29.1393 +    glVertex3fv(P055);
 29.1394 +    glEnd();
 29.1395 +    glBegin(GL_POLYGON);
 29.1396 +    glNormal3fv(N054);
 29.1397 +    glVertex3fv(P054);
 29.1398 +    glNormal3fv(N062);
 29.1399 +    glVertex3fv(P062);
 29.1400 +    glNormal3fv(N005);
 29.1401 +    glVertex3fv(P005);
 29.1402 +    glEnd();
 29.1403 +    glBegin(GL_POLYGON);
 29.1404 +    glNormal3fv(N054);
 29.1405 +    glVertex3fv(P054);
 29.1406 +    glNormal3fv(N005);
 29.1407 +    glVertex3fv(P005);
 29.1408 +    glNormal3fv(N053);
 29.1409 +    glVertex3fv(P053);
 29.1410 +    glEnd();
 29.1411 +    glBegin(GL_POLYGON);
 29.1412 +    glNormal3fv(N052);
 29.1413 +    glVertex3fv(P052);
 29.1414 +    glNormal3fv(N053);
 29.1415 +    glVertex3fv(P053);
 29.1416 +    glNormal3fv(N005);
 29.1417 +    glVertex3fv(P005);
 29.1418 +    glNormal3fv(N060);
 29.1419 +    glVertex3fv(P060);
 29.1420 +    glEnd();
 29.1421 +}
 29.1422 +
 29.1423 +void
 29.1424 +Dolphin013(void)
 29.1425 +{
 29.1426 +    glBegin(GL_POLYGON);
 29.1427 +    glNormal3fv(N116);
 29.1428 +    glVertex3fv(P116);
 29.1429 +    glNormal3fv(N117);
 29.1430 +    glVertex3fv(P117);
 29.1431 +    glNormal3fv(N112);
 29.1432 +    glVertex3fv(P112);
 29.1433 +    glNormal3fv(N113);
 29.1434 +    glVertex3fv(P113);
 29.1435 +    glEnd();
 29.1436 +    glBegin(GL_POLYGON);
 29.1437 +    glNormal3fv(N114);
 29.1438 +    glVertex3fv(P114);
 29.1439 +    glNormal3fv(N113);
 29.1440 +    glVertex3fv(P113);
 29.1441 +    glNormal3fv(N112);
 29.1442 +    glVertex3fv(P112);
 29.1443 +    glNormal3fv(N115);
 29.1444 +    glVertex3fv(P115);
 29.1445 +    glEnd();
 29.1446 +    glBegin(GL_POLYGON);
 29.1447 +    glNormal3fv(N114);
 29.1448 +    glVertex3fv(P114);
 29.1449 +    glNormal3fv(N116);
 29.1450 +    glVertex3fv(P116);
 29.1451 +    glNormal3fv(N113);
 29.1452 +    glVertex3fv(P113);
 29.1453 +    glEnd();
 29.1454 +    glBegin(GL_POLYGON);
 29.1455 +    glNormal3fv(N114);
 29.1456 +    glVertex3fv(P114);
 29.1457 +    glNormal3fv(N007);
 29.1458 +    glVertex3fv(P007);
 29.1459 +    glNormal3fv(N116);
 29.1460 +    glVertex3fv(P116);
 29.1461 +    glEnd();
 29.1462 +    glBegin(GL_POLYGON);
 29.1463 +    glNormal3fv(N007);
 29.1464 +    glVertex3fv(P007);
 29.1465 +    glNormal3fv(N002);
 29.1466 +    glVertex3fv(P002);
 29.1467 +    glNormal3fv(N116);
 29.1468 +    glVertex3fv(P116);
 29.1469 +    glEnd();
 29.1470 +    glBegin(GL_POLYGON);
 29.1471 +    glVertex3fv(P002);
 29.1472 +    glVertex3fv(P007);
 29.1473 +    glVertex3fv(P008);
 29.1474 +    glVertex3fv(P099);
 29.1475 +    glEnd();
 29.1476 +    glBegin(GL_POLYGON);
 29.1477 +    glVertex3fv(P007);
 29.1478 +    glVertex3fv(P114);
 29.1479 +    glVertex3fv(P115);
 29.1480 +    glVertex3fv(P008);
 29.1481 +    glEnd();
 29.1482 +    glBegin(GL_POLYGON);
 29.1483 +    glNormal3fv(N117);
 29.1484 +    glVertex3fv(P117);
 29.1485 +    glNormal3fv(N099);
 29.1486 +    glVertex3fv(P099);
 29.1487 +    glNormal3fv(N008);
 29.1488 +    glVertex3fv(P008);
 29.1489 +    glEnd();
 29.1490 +    glBegin(GL_POLYGON);
 29.1491 +    glNormal3fv(N117);
 29.1492 +    glVertex3fv(P117);
 29.1493 +    glNormal3fv(N008);
 29.1494 +    glVertex3fv(P008);
 29.1495 +    glNormal3fv(N112);
 29.1496 +    glVertex3fv(P112);
 29.1497 +    glEnd();
 29.1498 +    glBegin(GL_POLYGON);
 29.1499 +    glNormal3fv(N112);
 29.1500 +    glVertex3fv(P112);
 29.1501 +    glNormal3fv(N008);
 29.1502 +    glVertex3fv(P008);
 29.1503 +    glNormal3fv(N115);
 29.1504 +    glVertex3fv(P115);
 29.1505 +    glEnd();
 29.1506 +}
 29.1507 +
 29.1508 +void
 29.1509 +Dolphin014(void)
 29.1510 +{
 29.1511 +    glBegin(GL_POLYGON);
 29.1512 +    glNormal3fv(N111);
 29.1513 +    glVertex3fv(P111);
 29.1514 +    glNormal3fv(N110);
 29.1515 +    glVertex3fv(P110);
 29.1516 +    glNormal3fv(N102);
 29.1517 +    glVertex3fv(P102);
 29.1518 +    glNormal3fv(N121);
 29.1519 +    glVertex3fv(P121);
 29.1520 +    glEnd();
 29.1521 +    glBegin(GL_POLYGON);
 29.1522 +    glNormal3fv(N111);
 29.1523 +    glVertex3fv(P111);
 29.1524 +    glNormal3fv(N097);
 29.1525 +    glVertex3fv(P097);
 29.1526 +    glNormal3fv(N110);
 29.1527 +    glVertex3fv(P110);
 29.1528 +    glEnd();
 29.1529 +    glBegin(GL_POLYGON);
 29.1530 +    glNormal3fv(N097);
 29.1531 +    glVertex3fv(P097);
 29.1532 +    glNormal3fv(N119);
 29.1533 +    glVertex3fv(P119);
 29.1534 +    glNormal3fv(N110);
 29.1535 +    glVertex3fv(P110);
 29.1536 +    glEnd();
 29.1537 +    glBegin(GL_POLYGON);
 29.1538 +    glNormal3fv(N097);
 29.1539 +    glVertex3fv(P097);
 29.1540 +    glNormal3fv(N099);
 29.1541 +    glVertex3fv(P099);
 29.1542 +    glNormal3fv(N119);
 29.1543 +    glVertex3fv(P119);
 29.1544 +    glEnd();
 29.1545 +    glBegin(GL_POLYGON);
 29.1546 +    glNormal3fv(N099);
 29.1547 +    glVertex3fv(P099);
 29.1548 +    glNormal3fv(N065);
 29.1549 +    glVertex3fv(P065);
 29.1550 +    glNormal3fv(N119);
 29.1551 +    glVertex3fv(P119);
 29.1552 +    glEnd();
 29.1553 +    glBegin(GL_POLYGON);
 29.1554 +    glNormal3fv(N065);
 29.1555 +    glVertex3fv(P065);
 29.1556 +    glNormal3fv(N066);
 29.1557 +    glVertex3fv(P066);
 29.1558 +    glNormal3fv(N119);
 29.1559 +    glVertex3fv(P119);
 29.1560 +    glEnd();
 29.1561 +    glBegin(GL_POLYGON);
 29.1562 +    glVertex3fv(P098);
 29.1563 +    glVertex3fv(P097);
 29.1564 +    glVertex3fv(P111);
 29.1565 +    glVertex3fv(P121);
 29.1566 +    glEnd();
 29.1567 +    glBegin(GL_POLYGON);
 29.1568 +    glVertex3fv(P002);
 29.1569 +    glVertex3fv(P099);
 29.1570 +    glVertex3fv(P097);
 29.1571 +    glVertex3fv(P098);
 29.1572 +    glEnd();
 29.1573 +    glBegin(GL_POLYGON);
 29.1574 +    glNormal3fv(N110);
 29.1575 +    glVertex3fv(P110);
 29.1576 +    glNormal3fv(N119);
 29.1577 +    glVertex3fv(P119);
 29.1578 +    glNormal3fv(N118);
 29.1579 +    glVertex3fv(P118);
 29.1580 +    glNormal3fv(N102);
 29.1581 +    glVertex3fv(P102);
 29.1582 +    glEnd();
 29.1583 +    glBegin(GL_POLYGON);
 29.1584 +    glNormal3fv(N119);
 29.1585 +    glVertex3fv(P119);
 29.1586 +    glNormal3fv(N066);
 29.1587 +    glVertex3fv(P066);
 29.1588 +    glNormal3fv(N067);
 29.1589 +    glVertex3fv(P067);
 29.1590 +    glNormal3fv(N118);
 29.1591 +    glVertex3fv(P118);
 29.1592 +    glEnd();
 29.1593 +    glBegin(GL_POLYGON);
 29.1594 +    glNormal3fv(N067);
 29.1595 +    glVertex3fv(P067);
 29.1596 +    glNormal3fv(N060);
 29.1597 +    glVertex3fv(P060);
 29.1598 +    glNormal3fv(N002);
 29.1599 +    glVertex3fv(P002);
 29.1600 +    glEnd();
 29.1601 +    glBegin(GL_POLYGON);
 29.1602 +    glNormal3fv(N067);
 29.1603 +    glVertex3fv(P067);
 29.1604 +    glNormal3fv(N002);
 29.1605 +    glVertex3fv(P002);
 29.1606 +    glNormal3fv(N118);
 29.1607 +    glVertex3fv(P118);
 29.1608 +    glEnd();
 29.1609 +    glBegin(GL_POLYGON);
 29.1610 +    glNormal3fv(N118);
 29.1611 +    glVertex3fv(P118);
 29.1612 +    glNormal3fv(N002);
 29.1613 +    glVertex3fv(P002);
 29.1614 +    glNormal3fv(N098);
 29.1615 +    glVertex3fv(P098);
 29.1616 +    glEnd();
 29.1617 +    glBegin(GL_POLYGON);
 29.1618 +    glNormal3fv(N118);
 29.1619 +    glVertex3fv(P118);
 29.1620 +    glNormal3fv(N098);
 29.1621 +    glVertex3fv(P098);
 29.1622 +    glNormal3fv(N102);
 29.1623 +    glVertex3fv(P102);
 29.1624 +    glEnd();
 29.1625 +    glBegin(GL_POLYGON);
 29.1626 +    glNormal3fv(N102);
 29.1627 +    glVertex3fv(P102);
 29.1628 +    glNormal3fv(N098);
 29.1629 +    glVertex3fv(P098);
 29.1630 +    glNormal3fv(N121);
 29.1631 +    glVertex3fv(P121);
 29.1632 +    glEnd();
 29.1633 +}
 29.1634 +
 29.1635 +void
 29.1636 +Dolphin015(void)
 29.1637 +{
 29.1638 +    glBegin(GL_POLYGON);
 29.1639 +    glNormal3fv(N055);
 29.1640 +    glVertex3fv(P055);
 29.1641 +    glNormal3fv(N003);
 29.1642 +    glVertex3fv(P003);
 29.1643 +    glNormal3fv(N054);
 29.1644 +    glVertex3fv(P054);
 29.1645 +    glEnd();
 29.1646 +    glBegin(GL_POLYGON);
 29.1647 +    glNormal3fv(N003);
 29.1648 +    glVertex3fv(P003);
 29.1649 +    glNormal3fv(N055);
 29.1650 +    glVertex3fv(P055);
 29.1651 +    glNormal3fv(N063);
 29.1652 +    glVertex3fv(P063);
 29.1653 +    glEnd();
 29.1654 +    glBegin(GL_POLYGON);
 29.1655 +    glNormal3fv(N003);
 29.1656 +    glVertex3fv(P003);
 29.1657 +    glNormal3fv(N063);
 29.1658 +    glVertex3fv(P063);
 29.1659 +    glNormal3fv(N100);
 29.1660 +    glVertex3fv(P100);
 29.1661 +    glEnd();
 29.1662 +    glBegin(GL_POLYGON);
 29.1663 +    glNormal3fv(N003);
 29.1664 +    glVertex3fv(P003);
 29.1665 +    glNormal3fv(N100);
 29.1666 +    glVertex3fv(P100);
 29.1667 +    glNormal3fv(N054);
 29.1668 +    glVertex3fv(P054);
 29.1669 +    glEnd();
 29.1670 +    glBegin(GL_POLYGON);
 29.1671 +    glNormal3fv(N054);
 29.1672 +    glVertex3fv(P054);
 29.1673 +    glNormal3fv(N100);
 29.1674 +    glVertex3fv(P100);
 29.1675 +    glNormal3fv(N062);
 29.1676 +    glVertex3fv(P062);
 29.1677 +    glEnd();
 29.1678 +    glBegin(GL_POLYGON);
 29.1679 +    glNormal3fv(N100);
 29.1680 +    glVertex3fv(P100);
 29.1681 +    glNormal3fv(N064);
 29.1682 +    glVertex3fv(P064);
 29.1683 +    glNormal3fv(N120);
 29.1684 +    glVertex3fv(P120);
 29.1685 +    glEnd();
 29.1686 +    glBegin(GL_POLYGON);
 29.1687 +    glNormal3fv(N100);
 29.1688 +    glVertex3fv(P100);
 29.1689 +    glNormal3fv(N063);
 29.1690 +    glVertex3fv(P063);
 29.1691 +    glNormal3fv(N064);
 29.1692 +    glVertex3fv(P064);
 29.1693 +    glEnd();
 29.1694 +    glBegin(GL_POLYGON);
 29.1695 +    glNormal3fv(N063);
 29.1696 +    glVertex3fv(P063);
 29.1697 +    glNormal3fv(N006);
 29.1698 +    glVertex3fv(P006);
 29.1699 +    glNormal3fv(N064);
 29.1700 +    glVertex3fv(P064);
 29.1701 +    glEnd();
 29.1702 +    glBegin(GL_POLYGON);
 29.1703 +    glNormal3fv(N064);
 29.1704 +    glVertex3fv(P064);
 29.1705 +    glNormal3fv(N006);
 29.1706 +    glVertex3fv(P006);
 29.1707 +    glNormal3fv(N099);
 29.1708 +    glVertex3fv(P099);
 29.1709 +    glEnd();
 29.1710 +    glBegin(GL_POLYGON);
 29.1711 +    glNormal3fv(N064);
 29.1712 +    glVertex3fv(P064);
 29.1713 +    glNormal3fv(N099);
 29.1714 +    glVertex3fv(P099);
 29.1715 +    glNormal3fv(N117);
 29.1716 +    glVertex3fv(P117);
 29.1717 +    glEnd();
 29.1718 +    glBegin(GL_POLYGON);
 29.1719 +    glNormal3fv(N120);
 29.1720 +    glVertex3fv(P120);
 29.1721 +    glNormal3fv(N064);
 29.1722 +    glVertex3fv(P064);
 29.1723 +    glNormal3fv(N117);
 29.1724 +    glVertex3fv(P117);
 29.1725 +    glNormal3fv(N116);
 29.1726 +    glVertex3fv(P116);
 29.1727 +    glEnd();
 29.1728 +    glBegin(GL_POLYGON);
 29.1729 +    glNormal3fv(N006);
 29.1730 +    glVertex3fv(P006);
 29.1731 +    glNormal3fv(N065);
 29.1732 +    glVertex3fv(P065);
 29.1733 +    glNormal3fv(N099);
 29.1734 +    glVertex3fv(P099);
 29.1735 +    glEnd();
 29.1736 +    glBegin(GL_POLYGON);
 29.1737 +    glNormal3fv(N062);
 29.1738 +    glVertex3fv(P062);
 29.1739 +    glNormal3fv(N100);
 29.1740 +    glVertex3fv(P100);
 29.1741 +    glNormal3fv(N120);
 29.1742 +    glVertex3fv(P120);
 29.1743 +    glEnd();
 29.1744 +    glBegin(GL_POLYGON);
 29.1745 +    glNormal3fv(N005);
 29.1746 +    glVertex3fv(P005);
 29.1747 +    glNormal3fv(N062);
 29.1748 +    glVertex3fv(P062);
 29.1749 +    glNormal3fv(N120);
 29.1750 +    glVertex3fv(P120);
 29.1751 +    glEnd();
 29.1752 +    glBegin(GL_POLYGON);
 29.1753 +    glNormal3fv(N005);
 29.1754 +    glVertex3fv(P005);
 29.1755 +    glNormal3fv(N120);
 29.1756 +    glVertex3fv(P120);
 29.1757 +    glNormal3fv(N002);
 29.1758 +    glVertex3fv(P002);
 29.1759 +    glEnd();
 29.1760 +    glBegin(GL_POLYGON);
 29.1761 +    glNormal3fv(N002);
 29.1762 +    glVertex3fv(P002);
 29.1763 +    glNormal3fv(N120);
 29.1764 +    glVertex3fv(P120);
 29.1765 +    glNormal3fv(N116);
 29.1766 +    glVertex3fv(P116);
 29.1767 +    glEnd();
 29.1768 +    glBegin(GL_POLYGON);
 29.1769 +    glNormal3fv(N060);
 29.1770 +    glVertex3fv(P060);
 29.1771 +    glNormal3fv(N005);
 29.1772 +    glVertex3fv(P005);
 29.1773 +    glNormal3fv(N002);
 29.1774 +    glVertex3fv(P002);
 29.1775 +    glEnd();
 29.1776 +}
 29.1777 +
 29.1778 +void
 29.1779 +Dolphin016(void)
 29.1780 +{
 29.1781 +
 29.1782 +    glDisable(GL_DEPTH_TEST);
 29.1783 +    glBegin(GL_POLYGON);
 29.1784 +    glVertex3fv(P123);
 29.1785 +    glVertex3fv(P124);
 29.1786 +    glVertex3fv(P125);
 29.1787 +    glVertex3fv(P126);
 29.1788 +    glVertex3fv(P127);
 29.1789 +    glVertex3fv(P128);
 29.1790 +    glEnd();
 29.1791 +    glBegin(GL_POLYGON);
 29.1792 +    glVertex3fv(P129);
 29.1793 +    glVertex3fv(P130);
 29.1794 +    glVertex3fv(P131);
 29.1795 +    glVertex3fv(P132);
 29.1796 +    glVertex3fv(P133);
 29.1797 +    glVertex3fv(P134);
 29.1798 +    glEnd();
 29.1799 +    glBegin(GL_POLYGON);
 29.1800 +    glVertex3fv(P103);
 29.1801 +    glVertex3fv(P105);
 29.1802 +    glVertex3fv(P108);
 29.1803 +    glEnd();
 29.1804 +    glEnable(GL_DEPTH_TEST);
 29.1805 +}
 29.1806 +
 29.1807 +void
 29.1808 +DrawDolphin(fishRec * fish)
 29.1809 +{
 29.1810 +    float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7;
 29.1811 +    float pitch, thrash, chomp;
 29.1812 +
 29.1813 +    fish->htail = (int) (fish->htail - (int) (10.0 * fish->v)) % 360;
 29.1814 +
 29.1815 +    thrash = 70.0 * fish->v;
 29.1816 +
 29.1817 +    seg0 = 1.0 * thrash * sin((fish->htail) * RRAD);
 29.1818 +    seg3 = 1.0 * thrash * sin((fish->htail) * RRAD);
 29.1819 +    seg1 = 2.0 * thrash * sin((fish->htail + 4.0) * RRAD);
 29.1820 +    seg2 = 3.0 * thrash * sin((fish->htail + 6.0) * RRAD);
 29.1821 +    seg4 = 4.0 * thrash * sin((fish->htail + 10.0) * RRAD);
 29.1822 +    seg5 = 4.5 * thrash * sin((fish->htail + 15.0) * RRAD);
 29.1823 +    seg6 = 5.0 * thrash * sin((fish->htail + 20.0) * RRAD);
 29.1824 +    seg7 = 6.0 * thrash * sin((fish->htail + 30.0) * RRAD);
 29.1825 +
 29.1826 +    pitch = fish->v * sin((fish->htail + 180.0) * RRAD);
 29.1827 +
 29.1828 +    if (fish->v > 2.0) {
 29.1829 +        chomp = -(fish->v - 2.0) * 200.0;
 29.1830 +    }
 29.1831 +    chomp = 100.0;
 29.1832 +
 29.1833 +    P012[1] = iP012[1] + seg5;
 29.1834 +    P013[1] = iP013[1] + seg5;
 29.1835 +    P014[1] = iP014[1] + seg5;
 29.1836 +    P015[1] = iP015[1] + seg5;
 29.1837 +    P016[1] = iP016[1] + seg5;
 29.1838 +    P017[1] = iP017[1] + seg5;
 29.1839 +    P018[1] = iP018[1] + seg5;
 29.1840 +    P019[1] = iP019[1] + seg5;
 29.1841 +
 29.1842 +    P020[1] = iP020[1] + seg4;
 29.1843 +    P021[1] = iP021[1] + seg4;
 29.1844 +    P022[1] = iP022[1] + seg4;
 29.1845 +    P023[1] = iP023[1] + seg4;
 29.1846 +    P024[1] = iP024[1] + seg4;
 29.1847 +    P025[1] = iP025[1] + seg4;
 29.1848 +    P026[1] = iP026[1] + seg4;
 29.1849 +    P027[1] = iP027[1] + seg4;
 29.1850 +
 29.1851 +    P028[1] = iP028[1] + seg2;
 29.1852 +    P029[1] = iP029[1] + seg2;
 29.1853 +    P030[1] = iP030[1] + seg2;
 29.1854 +    P031[1] = iP031[1] + seg2;
 29.1855 +    P032[1] = iP032[1] + seg2;
 29.1856 +    P033[1] = iP033[1] + seg2;
 29.1857 +    P034[1] = iP034[1] + seg2;
 29.1858 +    P035[1] = iP035[1] + seg2;
 29.1859 +
 29.1860 +    P036[1] = iP036[1] + seg1;
 29.1861 +    P037[1] = iP037[1] + seg1;
 29.1862 +    P038[1] = iP038[1] + seg1;
 29.1863 +    P039[1] = iP039[1] + seg1;
 29.1864 +    P040[1] = iP040[1] + seg1;
 29.1865 +    P041[1] = iP041[1] + seg1;
 29.1866 +    P042[1] = iP042[1] + seg1;
 29.1867 +    P043[1] = iP043[1] + seg1;
 29.1868 +
 29.1869 +    P044[1] = iP044[1] + seg0;
 29.1870 +    P045[1] = iP045[1] + seg0;
 29.1871 +    P046[1] = iP046[1] + seg0;
 29.1872 +    P047[1] = iP047[1] + seg0;
 29.1873 +    P048[1] = iP048[1] + seg0;
 29.1874 +    P049[1] = iP049[1] + seg0;
 29.1875 +    P050[1] = iP050[1] + seg0;
 29.1876 +    P051[1] = iP051[1] + seg0;
 29.1877 +
 29.1878 +    P009[1] = iP009[1] + seg6;
 29.1879 +    P010[1] = iP010[1] + seg6;
 29.1880 +    P075[1] = iP075[1] + seg6;
 29.1881 +    P076[1] = iP076[1] + seg6;
 29.1882 +
 29.1883 +    P001[1] = iP001[1] + seg7;
 29.1884 +    P011[1] = iP011[1] + seg7;
 29.1885 +    P068[1] = iP068[1] + seg7;
 29.1886 +    P069[1] = iP069[1] + seg7;
 29.1887 +    P070[1] = iP070[1] + seg7;
 29.1888 +    P071[1] = iP071[1] + seg7;
 29.1889 +    P072[1] = iP072[1] + seg7;
 29.1890 +    P073[1] = iP073[1] + seg7;
 29.1891 +    P074[1] = iP074[1] + seg7;
 29.1892 +
 29.1893 +    P091[1] = iP091[1] + seg3;
 29.1894 +    P092[1] = iP092[1] + seg3;
 29.1895 +    P093[1] = iP093[1] + seg3;
 29.1896 +    P094[1] = iP094[1] + seg3;
 29.1897 +    P095[1] = iP095[1] + seg3;
 29.1898 +    P122[1] = iP122[1] + seg3 * 1.5;
 29.1899 +
 29.1900 +    P097[1] = iP097[1] + chomp;
 29.1901 +    P098[1] = iP098[1] + chomp;
 29.1902 +    P102[1] = iP102[1] + chomp;
 29.1903 +    P110[1] = iP110[1] + chomp;
 29.1904 +    P111[1] = iP111[1] + chomp;
 29.1905 +    P121[1] = iP121[1] + chomp;
 29.1906 +    P118[1] = iP118[1] + chomp;
 29.1907 +    P119[1] = iP119[1] + chomp;
 29.1908 +
 29.1909 +    glPushMatrix();
 29.1910 +
 29.1911 +    glRotatef(pitch, 1.0, 0.0, 0.0);
 29.1912 +
 29.1913 +    glTranslatef(0.0, 0.0, 7000.0);
 29.1914 +
 29.1915 +    glRotatef(180.0, 0.0, 1.0, 0.0);
 29.1916 +
 29.1917 +    glEnable(GL_CULL_FACE);
 29.1918 +    Dolphin014();
 29.1919 +    Dolphin010();
 29.1920 +    Dolphin009();
 29.1921 +    Dolphin012();
 29.1922 +    Dolphin013();
 29.1923 +    Dolphin006();
 29.1924 +    Dolphin002();
 29.1925 +    Dolphin001();
 29.1926 +    Dolphin003();
 29.1927 +    Dolphin015();
 29.1928 +    Dolphin004();
 29.1929 +    Dolphin005();
 29.1930 +    Dolphin007();
 29.1931 +    Dolphin008();
 29.1932 +    Dolphin011();
 29.1933 +    Dolphin016();
 29.1934 +    glDisable(GL_CULL_FACE);
 29.1935 +
 29.1936 +    glPopMatrix();
 29.1937 +}
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/shark.c	Tue Sep 29 07:59:23 2009 +0000
    30.3 @@ -0,0 +1,1308 @@
    30.4 +/**
    30.5 + * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
    30.6 + * ALL RIGHTS RESERVED
    30.7 + * Permission to use, copy, modify, and distribute this software for
    30.8 + * any purpose and without fee is hereby granted, provided that the above
    30.9 + * copyright notice appear in all copies and that both the copyright notice
   30.10 + * and this permission notice appear in supporting documentation, and that
   30.11 + * the name of Silicon Graphics, Inc. not be used in advertising
   30.12 + * or publicity pertaining to distribution of the software without specific,
   30.13 + * written prior permission.
   30.14 + *
   30.15 + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
   30.16 + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
   30.17 + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
   30.18 + * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
   30.19 + * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
   30.20 + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
   30.21 + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
   30.22 + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
   30.23 + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
   30.24 + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
   30.25 + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
   30.26 + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
   30.27 + *
   30.28 + * US Government Users Restricted Rights
   30.29 + * Use, duplication, or disclosure by the Government is subject to
   30.30 + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
   30.31 + * (c)(1)(ii) of the Rights in Technical Data and Computer Software
   30.32 + * clause at DFARS 252.227-7013 and/or in similar or successor
   30.33 + * clauses in the FAR or the DOD or NASA FAR Supplement.
   30.34 + * Unpublished-- rights reserved under the copyright laws of the
   30.35 + * United States.  Contractor/manufacturer is Silicon Graphics,
   30.36 + * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
   30.37 + *
   30.38 + * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
   30.39 + */
   30.40 +#include <GLUT/glut.h>
   30.41 +#include <math.h>
   30.42 +#include "atlantis.h"
   30.43 +/* *INDENT-OFF* */
   30.44 +static float N002[3] = {0.000077 ,-0.020611 ,0.999788};
   30.45 +static float N003[3] = {0.961425 ,0.258729 ,-0.093390};
   30.46 +static float N004[3] = {0.510811 ,-0.769633 ,-0.383063};
   30.47 +static float N005[3] = {0.400123 ,0.855734 ,-0.328055};
   30.48 +static float N006[3] = {-0.770715 ,0.610204 ,-0.183440};
   30.49 +static float N007[3] = {-0.915597 ,-0.373345 ,-0.149316};
   30.50 +static float N008[3] = {-0.972788 ,0.208921 ,-0.100179};
   30.51 +static float N009[3] = {-0.939713 ,-0.312268 ,-0.139383};
   30.52 +static float N010[3] = {-0.624138 ,-0.741047 ,-0.247589};
   30.53 +static float N011[3] = {0.591434 ,-0.768401 ,-0.244471};
   30.54 +static float N012[3] = {0.935152 ,-0.328495 ,-0.132598};
   30.55 +static float N013[3] = {0.997102 ,0.074243 ,-0.016593};
   30.56 +static float N014[3] = {0.969995 ,0.241712 ,-0.026186};
   30.57 +static float N015[3] = {0.844539 ,0.502628 ,-0.184714};
   30.58 +static float N016[3] = {-0.906608 ,0.386308 ,-0.169787};
   30.59 +static float N017[3] = {-0.970016 ,0.241698 ,-0.025516};
   30.60 +static float N018[3] = {-0.998652 ,0.050493 ,-0.012045};
   30.61 +static float N019[3] = {-0.942685 ,-0.333051 ,-0.020556};
   30.62 +static float N020[3] = {-0.660944 ,-0.750276 ,0.015480};
   30.63 +static float N021[3] = {0.503549 ,-0.862908 ,-0.042749};
   30.64 +static float N022[3] = {0.953202 ,-0.302092 ,-0.012089};
   30.65 +static float N023[3] = {0.998738 ,0.023574 ,0.044344};
   30.66 +static float N024[3] = {0.979297 ,0.193272 ,0.060202};
   30.67 +static float N025[3] = {0.798300 ,0.464885 ,0.382883};
   30.68 +static float N026[3] = {-0.756590 ,0.452403 ,0.472126};
   30.69 +static float N027[3] = {-0.953855 ,0.293003 ,0.065651};
   30.70 +static float N028[3] = {-0.998033 ,0.040292 ,0.048028};
   30.71 +static float N029[3] = {-0.977079 ,-0.204288 ,0.059858};
   30.72 +static float N030[3] = {-0.729117 ,-0.675304 ,0.111140};
   30.73 +static float N031[3] = {0.598361 ,-0.792753 ,0.116221};
   30.74 +static float N032[3] = {0.965192 ,-0.252991 ,0.066332};
   30.75 +static float N033[3] = {0.998201 ,-0.002790 ,0.059892};
   30.76 +static float N034[3] = {0.978657 ,0.193135 ,0.070207};
   30.77 +static float N035[3] = {0.718815 ,0.680392 ,0.142733};
   30.78 +static float N036[3] = {-0.383096 ,0.906212 ,0.178936};
   30.79 +static float N037[3] = {-0.952831 ,0.292590 ,0.080647};
   30.80 +static float N038[3] = {-0.997680 ,0.032417 ,0.059861};
   30.81 +static float N039[3] = {-0.982629 ,-0.169881 ,0.074700};
   30.82 +static float N040[3] = {-0.695424 ,-0.703466 ,0.146700};
   30.83 +static float N041[3] = {0.359323 ,-0.915531 ,0.180805};
   30.84 +static float N042[3] = {0.943356 ,-0.319387 ,0.089842};
   30.85 +static float N043[3] = {0.998272 ,-0.032435 ,0.048993};
   30.86 +static float N044[3] = {0.978997 ,0.193205 ,0.065084};
   30.87 +static float N045[3] = {0.872144 ,0.470094 ,-0.135565};
   30.88 +static float N046[3] = {-0.664282 ,0.737945 ,-0.119027};
   30.89 +static float N047[3] = {-0.954508 ,0.288570 ,0.075107};
   30.90 +static float N048[3] = {-0.998273 ,0.032406 ,0.048993};
   30.91 +static float N049[3] = {-0.979908 ,-0.193579 ,0.048038};
   30.92 +static float N050[3] = {-0.858736 ,-0.507202 ,-0.072938};
   30.93 +static float N051[3] = {0.643545 ,-0.763887 ,-0.048237};
   30.94 +static float N052[3] = {0.955580 ,-0.288954 ,0.058068};
   30.95 +static float N058[3] = {0.000050 ,0.793007 ,-0.609213};
   30.96 +static float N059[3] = {0.913510 ,0.235418 ,-0.331779};
   30.97 +static float N060[3] = {-0.807970 ,0.495000 ,-0.319625};
   30.98 +static float N061[3] = {0.000000 ,0.784687 ,-0.619892};
   30.99 +static float N062[3] = {0.000000 ,-1.000000 ,0.000000};
  30.100 +static float N063[3] = {0.000000 ,1.000000 ,0.000000};
  30.101 +static float N064[3] = {0.000000 ,1.000000 ,0.000000};
  30.102 +static float N065[3] = {0.000000 ,1.000000 ,0.000000};
  30.103 +static float N066[3] = {-0.055784 ,0.257059 ,0.964784};
  30.104 +static float N069[3] = {-0.000505 ,-0.929775 ,-0.368127};
  30.105 +static float N070[3] = {0.000000 ,1.000000 ,0.000000};
  30.106 +static float P002[3] = {0.00, -36.59, 5687.72};
  30.107 +static float P003[3] = {90.00, 114.73, 724.38};
  30.108 +static float P004[3] = {58.24, -146.84, 262.35};
  30.109 +static float P005[3] = {27.81, 231.52, 510.43};
  30.110 +static float P006[3] = {-27.81, 230.43, 509.76};
  30.111 +static float P007[3] = {-46.09, -146.83, 265.84};
  30.112 +static float P008[3] = {-90.00, 103.84, 718.53};
  30.113 +static float P009[3] = {-131.10, -165.92, 834.85};
  30.114 +static float P010[3] = {-27.81, -285.31, 500.00};
  30.115 +static float P011[3] = {27.81, -285.32, 500.00};
  30.116 +static float P012[3] = {147.96, -170.89, 845.50};
  30.117 +static float P013[3] = {180.00, 0.00, 2000.00};
  30.118 +static float P014[3] = {145.62, 352.67, 2000.00};
  30.119 +static float P015[3] = {55.62, 570.63, 2000.00};
  30.120 +static float P016[3] = {-55.62, 570.64, 2000.00};
  30.121 +static float P017[3] = {-145.62, 352.68, 2000.00};
  30.122 +static float P018[3] = {-180.00, 0.01, 2000.00};
  30.123 +static float P019[3] = {-178.20, -352.66, 2001.61};
  30.124 +static float P020[3] = {-55.63, -570.63, 2000.00};
  30.125 +static float P021[3] = {55.62, -570.64, 2000.00};
  30.126 +static float P022[3] = {179.91, -352.69, 1998.39};
  30.127 +static float P023[3] = {150.00, 0.00, 3000.00};
  30.128 +static float P024[3] = {121.35, 293.89, 3000.00};
  30.129 +static float P025[3] = {46.35, 502.93, 2883.09};
  30.130 +static float P026[3] = {-46.35, 497.45, 2877.24};
  30.131 +static float P027[3] = {-121.35, 293.90, 3000.00};
  30.132 +static float P028[3] = {-150.00, 0.00, 3000.00};
  30.133 +static float P029[3] = {-152.21, -304.84, 2858.68};
  30.134 +static float P030[3] = {-46.36, -475.52, 3000.00};
  30.135 +static float P031[3] = {46.35, -475.53, 3000.00};
  30.136 +static float P032[3] = {155.64, -304.87, 2863.50};
  30.137 +static float P033[3] = {90.00, 0.00, 4000.00};
  30.138 +static float P034[3] = {72.81, 176.33, 4000.00};
  30.139 +static float P035[3] = {27.81, 285.32, 4000.00};
  30.140 +static float P036[3] = {-27.81, 285.32, 4000.00};
  30.141 +static float P037[3] = {-72.81, 176.34, 4000.00};
  30.142 +static float P038[3] = {-90.00, 0.00, 4000.00};
  30.143 +static float P039[3] = {-72.81, -176.33, 4000.00};
  30.144 +static float P040[3] = {-27.81, -285.31, 4000.00};
  30.145 +static float P041[3] = {27.81, -285.32, 4000.00};
  30.146 +static float P042[3] = {72.81, -176.34, 4000.00};
  30.147 +static float P043[3] = {30.00, 0.00, 5000.00};
  30.148 +static float P044[3] = {24.27, 58.78, 5000.00};
  30.149 +static float P045[3] = {9.27, 95.11, 5000.00};
  30.150 +static float P046[3] = {-9.27, 95.11, 5000.00};
  30.151 +static float P047[3] = {-24.27, 58.78, 5000.00};
  30.152 +static float P048[3] = {-30.00, 0.00, 5000.00};
  30.153 +static float P049[3] = {-24.27, -58.78, 5000.00};
  30.154 +static float P050[3] = {-9.27, -95.10, 5000.00};
  30.155 +static float P051[3] = {9.27, -95.11, 5000.00};
  30.156 +static float P052[3] = {24.27, -58.78, 5000.00};
  30.157 +static float P058[3] = {0.00, 1212.72, 2703.08};
  30.158 +static float P059[3] = {50.36, 0.00, 108.14};
  30.159 +static float P060[3] = {-22.18, 0.00, 108.14};
  30.160 +static float P061[3] = {0.00, 1181.61, 6344.65};
  30.161 +static float P062[3] = {516.45, -887.08, 2535.45};
  30.162 +static float P063[3] = {-545.69, -879.31, 2555.63};
  30.163 +static float P064[3] = {618.89, -1005.64, 2988.32};
  30.164 +static float P065[3] = {-635.37, -1014.79, 2938.68};
  30.165 +static float P066[3] = {0.00, 1374.43, 3064.18};
  30.166 +static float P069[3] = {0.00, -418.25, 5765.04};
  30.167 +static float P070[3] = {0.00, 1266.91, 6629.60};
  30.168 +static float P071[3] = {-139.12, -124.96, 997.98};
  30.169 +static float P072[3] = {-139.24, -110.18, 1020.68};
  30.170 +static float P073[3] = {-137.33, -94.52, 1022.63};
  30.171 +static float P074[3] = {-137.03, -79.91, 996.89};
  30.172 +static float P075[3] = {-135.21, -91.48, 969.14};
  30.173 +static float P076[3] = {-135.39, -110.87, 968.76};
  30.174 +static float P077[3] = {150.23, -78.44, 995.53};
  30.175 +static float P078[3] = {152.79, -92.76, 1018.46};
  30.176 +static float P079[3] = {154.19, -110.20, 1020.55};
  30.177 +static float P080[3] = {151.33, -124.15, 993.77};
  30.178 +static float P081[3] = {150.49, -111.19, 969.86};
  30.179 +static float P082[3] = {150.79, -92.41, 969.70};
  30.180 +static float iP002[3] = {0.00, -36.59, 5687.72};
  30.181 +static float iP004[3] = {58.24, -146.84, 262.35};
  30.182 +static float iP007[3] = {-46.09, -146.83, 265.84};
  30.183 +static float iP010[3] = {-27.81, -285.31, 500.00};
  30.184 +static float iP011[3] = {27.81, -285.32, 500.00};
  30.185 +static float iP023[3] = {150.00, 0.00, 3000.00};
  30.186 +static float iP024[3] = {121.35, 293.89, 3000.00};
  30.187 +static float iP025[3] = {46.35, 502.93, 2883.09};
  30.188 +static float iP026[3] = {-46.35, 497.45, 2877.24};
  30.189 +static float iP027[3] = {-121.35, 293.90, 3000.00};
  30.190 +static float iP028[3] = {-150.00, 0.00, 3000.00};
  30.191 +static float iP029[3] = {-121.35, -304.84, 2853.86};
  30.192 +static float iP030[3] = {-46.36, -475.52, 3000.00};
  30.193 +static float iP031[3] = {46.35, -475.53, 3000.00};
  30.194 +static float iP032[3] = {121.35, -304.87, 2853.86};
  30.195 +static float iP033[3] = {90.00, 0.00, 4000.00};
  30.196 +static float iP034[3] = {72.81, 176.33, 4000.00};
  30.197 +static float iP035[3] = {27.81, 285.32, 4000.00};
  30.198 +static float iP036[3] = {-27.81, 285.32, 4000.00};
  30.199 +static float iP037[3] = {-72.81, 176.34, 4000.00};
  30.200 +static float iP038[3] = {-90.00, 0.00, 4000.00};
  30.201 +static float iP039[3] = {-72.81, -176.33, 4000.00};
  30.202 +static float iP040[3] = {-27.81, -285.31, 4000.00};
  30.203 +static float iP041[3] = {27.81, -285.32, 4000.00};
  30.204 +static float iP042[3] = {72.81, -176.34, 4000.00};
  30.205 +static float iP043[3] = {30.00, 0.00, 5000.00};
  30.206 +static float iP044[3] = {24.27, 58.78, 5000.00};
  30.207 +static float iP045[3] = {9.27, 95.11, 5000.00};
  30.208 +static float iP046[3] = {-9.27, 95.11, 5000.00};
  30.209 +static float iP047[3] = {-24.27, 58.78, 5000.00};
  30.210 +static float iP048[3] = {-30.00, 0.00, 5000.00};
  30.211 +static float iP049[3] = {-24.27, -58.78, 5000.00};
  30.212 +static float iP050[3] = {-9.27, -95.10, 5000.00};
  30.213 +static float iP051[3] = {9.27, -95.11, 5000.00};
  30.214 +static float iP052[3] = {24.27, -58.78, 5000.00};
  30.215 +static float iP061[3] = {0.00, 1181.61, 6344.65};
  30.216 +static float iP069[3] = {0.00, -418.25, 5765.04};
  30.217 +static float iP070[3] = {0.00, 1266.91, 6629.60};
  30.218 +/* *INDENT-ON* */
  30.219 +
  30.220 +void
  30.221 +Fish001(void)
  30.222 +{
  30.223 +    glBegin(GL_POLYGON);
  30.224 +    glNormal3fv(N005);
  30.225 +    glVertex3fv(P005);
  30.226 +    glNormal3fv(N059);
  30.227 +    glVertex3fv(P059);
  30.228 +    glNormal3fv(N060);
  30.229 +    glVertex3fv(P060);
  30.230 +    glNormal3fv(N006);
  30.231 +    glVertex3fv(P006);
  30.232 +    glEnd();
  30.233 +    glBegin(GL_POLYGON);
  30.234 +    glNormal3fv(N015);
  30.235 +    glVertex3fv(P015);
  30.236 +    glNormal3fv(N005);
  30.237 +    glVertex3fv(P005);
  30.238 +    glNormal3fv(N006);
  30.239 +    glVertex3fv(P006);
  30.240 +    glNormal3fv(N016);
  30.241 +    glVertex3fv(P016);
  30.242 +    glEnd();
  30.243 +    glBegin(GL_POLYGON);
  30.244 +    glNormal3fv(N006);
  30.245 +    glVertex3fv(P006);
  30.246 +    glNormal3fv(N060);
  30.247 +    glVertex3fv(P060);
  30.248 +    glNormal3fv(N008);
  30.249 +    glVertex3fv(P008);
  30.250 +    glEnd();
  30.251 +    glBegin(GL_POLYGON);
  30.252 +    glNormal3fv(N016);
  30.253 +    glVertex3fv(P016);
  30.254 +    glNormal3fv(N006);
  30.255 +    glVertex3fv(P006);
  30.256 +    glNormal3fv(N008);
  30.257 +    glVertex3fv(P008);
  30.258 +    glEnd();
  30.259 +    glBegin(GL_POLYGON);
  30.260 +    glNormal3fv(N016);
  30.261 +    glVertex3fv(P016);
  30.262 +    glNormal3fv(N008);
  30.263 +    glVertex3fv(P008);
  30.264 +    glNormal3fv(N017);
  30.265 +    glVertex3fv(P017);
  30.266 +    glEnd();
  30.267 +    glBegin(GL_POLYGON);
  30.268 +    glNormal3fv(N017);
  30.269 +    glVertex3fv(P017);
  30.270 +    glNormal3fv(N008);
  30.271 +    glVertex3fv(P008);
  30.272 +    glNormal3fv(N018);
  30.273 +    glVertex3fv(P018);
  30.274 +    glEnd();
  30.275 +    glBegin(GL_POLYGON);
  30.276 +    glNormal3fv(N008);
  30.277 +    glVertex3fv(P008);
  30.278 +    glNormal3fv(N009);
  30.279 +    glVertex3fv(P009);
  30.280 +    glNormal3fv(N018);
  30.281 +    glVertex3fv(P018);
  30.282 +    glEnd();
  30.283 +    glBegin(GL_POLYGON);
  30.284 +    glNormal3fv(N008);
  30.285 +    glVertex3fv(P008);
  30.286 +    glNormal3fv(N060);
  30.287 +    glVertex3fv(P060);
  30.288 +    glNormal3fv(N009);
  30.289 +    glVertex3fv(P009);
  30.290 +    glEnd();
  30.291 +    glBegin(GL_POLYGON);
  30.292 +    glNormal3fv(N007);
  30.293 +    glVertex3fv(P007);
  30.294 +    glNormal3fv(N010);
  30.295 +    glVertex3fv(P010);
  30.296 +    glNormal3fv(N009);
  30.297 +    glVertex3fv(P009);
  30.298 +    glEnd();
  30.299 +    glBegin(GL_POLYGON);
  30.300 +    glNormal3fv(N009);
  30.301 +    glVertex3fv(P009);
  30.302 +    glNormal3fv(N019);
  30.303 +    glVertex3fv(P019);
  30.304 +    glNormal3fv(N018);
  30.305 +    glVertex3fv(P018);
  30.306 +    glEnd();
  30.307 +    glBegin(GL_POLYGON);
  30.308 +    glNormal3fv(N009);
  30.309 +    glVertex3fv(P009);
  30.310 +    glNormal3fv(N010);
  30.311 +    glVertex3fv(P010);
  30.312 +    glNormal3fv(N019);
  30.313 +    glVertex3fv(P019);
  30.314 +    glEnd();
  30.315 +    glBegin(GL_POLYGON);
  30.316 +    glNormal3fv(N010);
  30.317 +    glVertex3fv(P010);
  30.318 +    glNormal3fv(N020);
  30.319 +    glVertex3fv(P020);
  30.320 +    glNormal3fv(N019);
  30.321 +    glVertex3fv(P019);
  30.322 +    glEnd();
  30.323 +    glBegin(GL_POLYGON);
  30.324 +    glNormal3fv(N010);
  30.325 +    glVertex3fv(P010);
  30.326 +    glNormal3fv(N011);
  30.327 +    glVertex3fv(P011);
  30.328 +    glNormal3fv(N021);
  30.329 +    glVertex3fv(P021);
  30.330 +    glNormal3fv(N020);
  30.331 +    glVertex3fv(P020);
  30.332 +    glEnd();
  30.333 +    glBegin(GL_POLYGON);
  30.334 +    glNormal3fv(N004);
  30.335 +    glVertex3fv(P004);
  30.336 +    glNormal3fv(N011);
  30.337 +    glVertex3fv(P011);
  30.338 +    glNormal3fv(N010);
  30.339 +    glVertex3fv(P010);
  30.340 +    glNormal3fv(N007);
  30.341 +    glVertex3fv(P007);
  30.342 +    glEnd();
  30.343 +    glBegin(GL_POLYGON);
  30.344 +    glNormal3fv(N004);
  30.345 +    glVertex3fv(P004);
  30.346 +    glNormal3fv(N012);
  30.347 +    glVertex3fv(P012);
  30.348 +    glNormal3fv(N011);
  30.349 +    glVertex3fv(P011);
  30.350 +    glEnd();
  30.351 +    glBegin(GL_POLYGON);
  30.352 +    glNormal3fv(N012);
  30.353 +    glVertex3fv(P012);
  30.354 +    glNormal3fv(N022);
  30.355 +    glVertex3fv(P022);
  30.356 +    glNormal3fv(N011);
  30.357 +    glVertex3fv(P011);
  30.358 +    glEnd();
  30.359 +    glBegin(GL_POLYGON);
  30.360 +    glNormal3fv(N011);
  30.361 +    glVertex3fv(P011);
  30.362 +    glNormal3fv(N022);
  30.363 +    glVertex3fv(P022);
  30.364 +    glNormal3fv(N021);
  30.365 +    glVertex3fv(P021);
  30.366 +    glEnd();
  30.367 +    glBegin(GL_POLYGON);
  30.368 +    glNormal3fv(N059);
  30.369 +    glVertex3fv(P059);
  30.370 +    glNormal3fv(N005);
  30.371 +    glVertex3fv(P005);
  30.372 +    glNormal3fv(N015);
  30.373 +    glVertex3fv(P015);
  30.374 +    glEnd();
  30.375 +    glBegin(GL_POLYGON);
  30.376 +    glNormal3fv(N015);
  30.377 +    glVertex3fv(P015);
  30.378 +    glNormal3fv(N014);
  30.379 +    glVertex3fv(P014);
  30.380 +    glNormal3fv(N003);
  30.381 +    glVertex3fv(P003);
  30.382 +    glEnd();
  30.383 +    glBegin(GL_POLYGON);
  30.384 +    glNormal3fv(N015);
  30.385 +    glVertex3fv(P015);
  30.386 +    glNormal3fv(N003);
  30.387 +    glVertex3fv(P003);
  30.388 +    glNormal3fv(N059);
  30.389 +    glVertex3fv(P059);
  30.390 +    glEnd();
  30.391 +    glBegin(GL_POLYGON);
  30.392 +    glNormal3fv(N014);
  30.393 +    glVertex3fv(P014);
  30.394 +    glNormal3fv(N013);
  30.395 +    glVertex3fv(P013);
  30.396 +    glNormal3fv(N003);
  30.397 +    glVertex3fv(P003);
  30.398 +    glEnd();
  30.399 +    glBegin(GL_POLYGON);
  30.400 +    glNormal3fv(N003);
  30.401 +    glVertex3fv(P003);
  30.402 +    glNormal3fv(N012);
  30.403 +    glVertex3fv(P012);
  30.404 +    glNormal3fv(N059);
  30.405 +    glVertex3fv(P059);
  30.406 +    glEnd();
  30.407 +    glBegin(GL_POLYGON);
  30.408 +    glNormal3fv(N013);
  30.409 +    glVertex3fv(P013);
  30.410 +    glNormal3fv(N012);
  30.411 +    glVertex3fv(P012);
  30.412 +    glNormal3fv(N003);
  30.413 +    glVertex3fv(P003);
  30.414 +    glEnd();
  30.415 +    glBegin(GL_POLYGON);
  30.416 +    glNormal3fv(N013);
  30.417 +    glVertex3fv(P013);
  30.418 +    glNormal3fv(N022);
  30.419 +    glVertex3fv(P022);
  30.420 +    glNormal3fv(N012);
  30.421 +    glVertex3fv(P012);
  30.422 +    glEnd();
  30.423 +    glBegin(GL_POLYGON);
  30.424 +    glVertex3fv(P071);
  30.425 +    glVertex3fv(P072);
  30.426 +    glVertex3fv(P073);
  30.427 +    glVertex3fv(P074);
  30.428 +    glVertex3fv(P075);
  30.429 +    glVertex3fv(P076);
  30.430 +    glEnd();
  30.431 +    glBegin(GL_POLYGON);
  30.432 +    glVertex3fv(P077);
  30.433 +    glVertex3fv(P078);
  30.434 +    glVertex3fv(P079);
  30.435 +    glVertex3fv(P080);
  30.436 +    glVertex3fv(P081);
  30.437 +    glVertex3fv(P082);
  30.438 +    glEnd();
  30.439 +}
  30.440 +
  30.441 +void
  30.442 +Fish002(void)
  30.443 +{
  30.444 +    glBegin(GL_POLYGON);
  30.445 +    glNormal3fv(N013);
  30.446 +    glVertex3fv(P013);
  30.447 +    glNormal3fv(N014);
  30.448 +    glVertex3fv(P014);
  30.449 +    glNormal3fv(N024);
  30.450 +    glVertex3fv(P024);
  30.451 +    glNormal3fv(N023);
  30.452 +    glVertex3fv(P023);
  30.453 +    glEnd();
  30.454 +    glBegin(GL_POLYGON);
  30.455 +    glNormal3fv(N014);
  30.456 +    glVertex3fv(P014);
  30.457 +    glNormal3fv(N015);
  30.458 +    glVertex3fv(P015);
  30.459 +    glNormal3fv(N025);
  30.460 +    glVertex3fv(P025);
  30.461 +    glNormal3fv(N024);
  30.462 +    glVertex3fv(P024);
  30.463 +    glEnd();
  30.464 +    glBegin(GL_POLYGON);
  30.465 +    glNormal3fv(N016);
  30.466 +    glVertex3fv(P016);
  30.467 +    glNormal3fv(N017);
  30.468 +    glVertex3fv(P017);
  30.469 +    glNormal3fv(N027);
  30.470 +    glVertex3fv(P027);
  30.471 +    glNormal3fv(N026);
  30.472 +    glVertex3fv(P026);
  30.473 +    glEnd();
  30.474 +    glBegin(GL_POLYGON);
  30.475 +    glNormal3fv(N017);
  30.476 +    glVertex3fv(P017);
  30.477 +    glNormal3fv(N018);
  30.478 +    glVertex3fv(P018);
  30.479 +    glNormal3fv(N028);
  30.480 +    glVertex3fv(P028);
  30.481 +    glNormal3fv(N027);
  30.482 +    glVertex3fv(P027);
  30.483 +    glEnd();
  30.484 +    glBegin(GL_POLYGON);
  30.485 +    glNormal3fv(N020);
  30.486 +    glVertex3fv(P020);
  30.487 +    glNormal3fv(N021);
  30.488 +    glVertex3fv(P021);
  30.489 +    glNormal3fv(N031);
  30.490 +    glVertex3fv(P031);
  30.491 +    glNormal3fv(N030);
  30.492 +    glVertex3fv(P030);
  30.493 +    glEnd();
  30.494 +    glBegin(GL_POLYGON);
  30.495 +    glNormal3fv(N013);
  30.496 +    glVertex3fv(P013);
  30.497 +    glNormal3fv(N023);
  30.498 +    glVertex3fv(P023);
  30.499 +    glNormal3fv(N022);
  30.500 +    glVertex3fv(P022);
  30.501 +    glEnd();
  30.502 +    glBegin(GL_POLYGON);
  30.503 +    glNormal3fv(N022);
  30.504 +    glVertex3fv(P022);
  30.505 +    glNormal3fv(N023);
  30.506 +    glVertex3fv(P023);
  30.507 +    glNormal3fv(N032);
  30.508 +    glVertex3fv(P032);
  30.509 +    glEnd();
  30.510 +    glBegin(GL_POLYGON);
  30.511 +    glNormal3fv(N022);
  30.512 +    glVertex3fv(P022);
  30.513 +    glNormal3fv(N032);
  30.514 +    glVertex3fv(P032);
  30.515 +    glNormal3fv(N031);
  30.516 +    glVertex3fv(P031);
  30.517 +    glEnd();
  30.518 +    glBegin(GL_POLYGON);
  30.519 +    glNormal3fv(N022);
  30.520 +    glVertex3fv(P022);
  30.521 +    glNormal3fv(N031);
  30.522 +    glVertex3fv(P031);
  30.523 +    glNormal3fv(N021);
  30.524 +    glVertex3fv(P021);
  30.525 +    glEnd();
  30.526 +    glBegin(GL_POLYGON);
  30.527 +    glNormal3fv(N018);
  30.528 +    glVertex3fv(P018);
  30.529 +    glNormal3fv(N019);
  30.530 +    glVertex3fv(P019);
  30.531 +    glNormal3fv(N029);
  30.532 +    glVertex3fv(P029);
  30.533 +    glEnd();
  30.534 +    glBegin(GL_POLYGON);
  30.535 +    glNormal3fv(N018);
  30.536 +    glVertex3fv(P018);
  30.537 +    glNormal3fv(N029);
  30.538 +    glVertex3fv(P029);
  30.539 +    glNormal3fv(N028);
  30.540 +    glVertex3fv(P028);
  30.541 +    glEnd();
  30.542 +    glBegin(GL_POLYGON);
  30.543 +    glNormal3fv(N019);
  30.544 +    glVertex3fv(P019);
  30.545 +    glNormal3fv(N020);
  30.546 +    glVertex3fv(P020);
  30.547 +    glNormal3fv(N030);
  30.548 +    glVertex3fv(P030);
  30.549 +    glEnd();
  30.550 +    glBegin(GL_POLYGON);
  30.551 +    glNormal3fv(N019);
  30.552 +    glVertex3fv(P019);
  30.553 +    glNormal3fv(N030);
  30.554 +    glVertex3fv(P030);
  30.555 +    glNormal3fv(N029);
  30.556 +    glVertex3fv(P029);
  30.557 +    glEnd();
  30.558 +}
  30.559 +
  30.560 +void
  30.561 +Fish003(void)
  30.562 +{
  30.563 +    glBegin(GL_POLYGON);
  30.564 +    glNormal3fv(N032);
  30.565 +    glVertex3fv(P032);
  30.566 +    glNormal3fv(N023);
  30.567 +    glVertex3fv(P023);
  30.568 +    glNormal3fv(N033);
  30.569 +    glVertex3fv(P033);
  30.570 +    glNormal3fv(N042);
  30.571 +    glVertex3fv(P042);
  30.572 +    glEnd();
  30.573 +    glBegin(GL_POLYGON);
  30.574 +    glNormal3fv(N031);
  30.575 +    glVertex3fv(P031);
  30.576 +    glNormal3fv(N032);
  30.577 +    glVertex3fv(P032);
  30.578 +    glNormal3fv(N042);
  30.579 +    glVertex3fv(P042);
  30.580 +    glNormal3fv(N041);
  30.581 +    glVertex3fv(P041);
  30.582 +    glEnd();
  30.583 +    glBegin(GL_POLYGON);
  30.584 +    glNormal3fv(N023);
  30.585 +    glVertex3fv(P023);
  30.586 +    glNormal3fv(N024);
  30.587 +    glVertex3fv(P024);
  30.588 +    glNormal3fv(N034);
  30.589 +    glVertex3fv(P034);
  30.590 +    glNormal3fv(N033);
  30.591 +    glVertex3fv(P033);
  30.592 +    glEnd();
  30.593 +    glBegin(GL_POLYGON);
  30.594 +    glNormal3fv(N024);
  30.595 +    glVertex3fv(P024);
  30.596 +    glNormal3fv(N025);
  30.597 +    glVertex3fv(P025);
  30.598 +    glNormal3fv(N035);
  30.599 +    glVertex3fv(P035);
  30.600 +    glNormal3fv(N034);
  30.601 +    glVertex3fv(P034);
  30.602 +    glEnd();
  30.603 +    glBegin(GL_POLYGON);
  30.604 +    glNormal3fv(N030);
  30.605 +    glVertex3fv(P030);
  30.606 +    glNormal3fv(N031);
  30.607 +    glVertex3fv(P031);
  30.608 +    glNormal3fv(N041);
  30.609 +    glVertex3fv(P041);
  30.610 +    glNormal3fv(N040);
  30.611 +    glVertex3fv(P040);
  30.612 +    glEnd();
  30.613 +    glBegin(GL_POLYGON);
  30.614 +    glNormal3fv(N025);
  30.615 +    glVertex3fv(P025);
  30.616 +    glNormal3fv(N026);
  30.617 +    glVertex3fv(P026);
  30.618 +    glNormal3fv(N036);
  30.619 +    glVertex3fv(P036);
  30.620 +    glNormal3fv(N035);
  30.621 +    glVertex3fv(P035);
  30.622 +    glEnd();
  30.623 +    glBegin(GL_POLYGON);
  30.624 +    glNormal3fv(N026);
  30.625 +    glVertex3fv(P026);
  30.626 +    glNormal3fv(N027);
  30.627 +    glVertex3fv(P027);
  30.628 +    glNormal3fv(N037);
  30.629 +    glVertex3fv(P037);
  30.630 +    glNormal3fv(N036);
  30.631 +    glVertex3fv(P036);
  30.632 +    glEnd();
  30.633 +    glBegin(GL_POLYGON);
  30.634 +    glNormal3fv(N027);
  30.635 +    glVertex3fv(P027);
  30.636 +    glNormal3fv(N028);
  30.637 +    glVertex3fv(P028);
  30.638 +    glNormal3fv(N038);
  30.639 +    glVertex3fv(P038);
  30.640 +    glNormal3fv(N037);
  30.641 +    glVertex3fv(P037);
  30.642 +    glEnd();
  30.643 +    glBegin(GL_POLYGON);
  30.644 +    glNormal3fv(N028);
  30.645 +    glVertex3fv(P028);
  30.646 +    glNormal3fv(N029);
  30.647 +    glVertex3fv(P029);
  30.648 +    glNormal3fv(N039);
  30.649 +    glVertex3fv(P039);
  30.650 +    glNormal3fv(N038);
  30.651 +    glVertex3fv(P038);
  30.652 +    glEnd();
  30.653 +    glBegin(GL_POLYGON);
  30.654 +    glNormal3fv(N029);
  30.655 +    glVertex3fv(P029);
  30.656 +    glNormal3fv(N030);
  30.657 +    glVertex3fv(P030);
  30.658 +    glNormal3fv(N040);
  30.659 +    glVertex3fv(P040);
  30.660 +    glNormal3fv(N039);
  30.661 +    glVertex3fv(P039);
  30.662 +    glEnd();
  30.663 +}
  30.664 +
  30.665 +void
  30.666 +Fish004(void)
  30.667 +{
  30.668 +    glBegin(GL_POLYGON);
  30.669 +    glNormal3fv(N040);
  30.670 +    glVertex3fv(P040);
  30.671 +    glNormal3fv(N041);
  30.672 +    glVertex3fv(P041);
  30.673 +    glNormal3fv(N051);
  30.674 +    glVertex3fv(P051);
  30.675 +    glNormal3fv(N050);
  30.676 +    glVertex3fv(P050);
  30.677 +    glEnd();
  30.678 +    glBegin(GL_POLYGON);
  30.679 +    glNormal3fv(N041);
  30.680 +    glVertex3fv(P041);
  30.681 +    glNormal3fv(N042);
  30.682 +    glVertex3fv(P042);
  30.683 +    glNormal3fv(N052);
  30.684 +    glVertex3fv(P052);
  30.685 +    glNormal3fv(N051);
  30.686 +    glVertex3fv(P051);
  30.687 +    glEnd();
  30.688 +    glBegin(GL_POLYGON);
  30.689 +    glNormal3fv(N042);
  30.690 +    glVertex3fv(P042);
  30.691 +    glNormal3fv(N033);
  30.692 +    glVertex3fv(P033);
  30.693 +    glNormal3fv(N043);
  30.694 +    glVertex3fv(P043);
  30.695 +    glNormal3fv(N052);
  30.696 +    glVertex3fv(P052);
  30.697 +    glEnd();
  30.698 +    glBegin(GL_POLYGON);
  30.699 +    glNormal3fv(N033);
  30.700 +    glVertex3fv(P033);
  30.701 +    glNormal3fv(N034);
  30.702 +    glVertex3fv(P034);
  30.703 +    glNormal3fv(N044);
  30.704 +    glVertex3fv(P044);
  30.705 +    glNormal3fv(N043);
  30.706 +    glVertex3fv(P043);
  30.707 +    glEnd();
  30.708 +    glBegin(GL_POLYGON);
  30.709 +    glNormal3fv(N034);
  30.710 +    glVertex3fv(P034);
  30.711 +    glNormal3fv(N035);
  30.712 +    glVertex3fv(P035);
  30.713 +    glNormal3fv(N045);
  30.714 +    glVertex3fv(P045);
  30.715 +    glNormal3fv(N044);
  30.716 +    glVertex3fv(P044);
  30.717 +    glEnd();
  30.718 +    glBegin(GL_POLYGON);
  30.719 +    glNormal3fv(N035);
  30.720 +    glVertex3fv(P035);
  30.721 +    glNormal3fv(N036);
  30.722 +    glVertex3fv(P036);
  30.723 +    glNormal3fv(N046);
  30.724 +    glVertex3fv(P046);
  30.725 +    glNormal3fv(N045);
  30.726 +    glVertex3fv(P045);
  30.727 +    glEnd();
  30.728 +    glBegin(GL_POLYGON);
  30.729 +    glNormal3fv(N036);
  30.730 +    glVertex3fv(P036);
  30.731 +    glNormal3fv(N037);
  30.732 +    glVertex3fv(P037);
  30.733 +    glNormal3fv(N047);
  30.734 +    glVertex3fv(P047);
  30.735 +    glNormal3fv(N046);
  30.736 +    glVertex3fv(P046);
  30.737 +    glEnd();
  30.738 +    glBegin(GL_POLYGON);
  30.739 +    glNormal3fv(N037);
  30.740 +    glVertex3fv(P037);
  30.741 +    glNormal3fv(N038);
  30.742 +    glVertex3fv(P038);
  30.743 +    glNormal3fv(N048);
  30.744 +    glVertex3fv(P048);
  30.745 +    glNormal3fv(N047);
  30.746 +    glVertex3fv(P047);
  30.747 +    glEnd();
  30.748 +    glBegin(GL_POLYGON);
  30.749 +    glNormal3fv(N038);
  30.750 +    glVertex3fv(P038);
  30.751 +    glNormal3fv(N039);
  30.752 +    glVertex3fv(P039);
  30.753 +    glNormal3fv(N049);
  30.754 +    glVertex3fv(P049);
  30.755 +    glNormal3fv(N048);
  30.756 +    glVertex3fv(P048);
  30.757 +    glEnd();
  30.758 +    glBegin(GL_POLYGON);
  30.759 +    glNormal3fv(N039);
  30.760 +    glVertex3fv(P039);
  30.761 +    glNormal3fv(N040);
  30.762 +    glVertex3fv(P040);
  30.763 +    glNormal3fv(N050);
  30.764 +    glVertex3fv(P050);
  30.765 +    glNormal3fv(N049);
  30.766 +    glVertex3fv(P049);
  30.767 +    glEnd();
  30.768 +    glBegin(GL_POLYGON);
  30.769 +    glNormal3fv(N070);
  30.770 +    glVertex3fv(P070);
  30.771 +    glNormal3fv(N061);
  30.772 +    glVertex3fv(P061);
  30.773 +    glNormal3fv(N002);
  30.774 +    glVertex3fv(P002);
  30.775 +    glEnd();
  30.776 +    glBegin(GL_POLYGON);
  30.777 +    glNormal3fv(N061);
  30.778 +    glVertex3fv(P061);
  30.779 +    glNormal3fv(N046);
  30.780 +    glVertex3fv(P046);
  30.781 +    glNormal3fv(N002);
  30.782 +    glVertex3fv(P002);
  30.783 +    glEnd();
  30.784 +    glBegin(GL_POLYGON);
  30.785 +    glNormal3fv(N045);
  30.786 +    glVertex3fv(P045);
  30.787 +    glNormal3fv(N046);
  30.788 +    glVertex3fv(P046);
  30.789 +    glNormal3fv(N061);
  30.790 +    glVertex3fv(P061);
  30.791 +    glEnd();
  30.792 +    glBegin(GL_POLYGON);
  30.793 +    glNormal3fv(N002);
  30.794 +    glVertex3fv(P002);
  30.795 +    glNormal3fv(N061);
  30.796 +    glVertex3fv(P061);
  30.797 +    glNormal3fv(N070);
  30.798 +    glVertex3fv(P070);
  30.799 +    glEnd();
  30.800 +    glBegin(GL_POLYGON);
  30.801 +    glNormal3fv(N002);
  30.802 +    glVertex3fv(P002);
  30.803 +    glNormal3fv(N045);
  30.804 +    glVertex3fv(P045);
  30.805 +    glNormal3fv(N061);
  30.806 +    glVertex3fv(P061);
  30.807 +    glEnd();
  30.808 +}
  30.809 +
  30.810 +void
  30.811 +Fish005(void)
  30.812 +{
  30.813 +    glBegin(GL_POLYGON);
  30.814 +    glNormal3fv(N002);
  30.815 +    glVertex3fv(P002);
  30.816 +    glNormal3fv(N044);
  30.817 +    glVertex3fv(P044);
  30.818 +    glNormal3fv(N045);
  30.819 +    glVertex3fv(P045);
  30.820 +    glEnd();
  30.821 +    glBegin(GL_POLYGON);
  30.822 +    glNormal3fv(N002);
  30.823 +    glVertex3fv(P002);
  30.824 +    glNormal3fv(N043);
  30.825 +    glVertex3fv(P043);
  30.826 +    glNormal3fv(N044);
  30.827 +    glVertex3fv(P044);
  30.828 +    glEnd();
  30.829 +    glBegin(GL_POLYGON);
  30.830 +    glNormal3fv(N002);
  30.831 +    glVertex3fv(P002);
  30.832 +    glNormal3fv(N052);
  30.833 +    glVertex3fv(P052);
  30.834 +    glNormal3fv(N043);
  30.835 +    glVertex3fv(P043);
  30.836 +    glEnd();
  30.837 +    glBegin(GL_POLYGON);
  30.838 +    glNormal3fv(N002);
  30.839 +    glVertex3fv(P002);
  30.840 +    glNormal3fv(N051);
  30.841 +    glVertex3fv(P051);
  30.842 +    glNormal3fv(N052);
  30.843 +    glVertex3fv(P052);
  30.844 +    glEnd();
  30.845 +    glBegin(GL_POLYGON);
  30.846 +    glNormal3fv(N002);
  30.847 +    glVertex3fv(P002);
  30.848 +    glNormal3fv(N046);
  30.849 +    glVertex3fv(P046);
  30.850 +    glNormal3fv(N047);
  30.851 +    glVertex3fv(P047);
  30.852 +    glEnd();
  30.853 +    glBegin(GL_POLYGON);
  30.854 +    glNormal3fv(N002);
  30.855 +    glVertex3fv(P002);
  30.856 +    glNormal3fv(N047);
  30.857 +    glVertex3fv(P047);
  30.858 +    glNormal3fv(N048);
  30.859 +    glVertex3fv(P048);
  30.860 +    glEnd();
  30.861 +    glBegin(GL_POLYGON);
  30.862 +    glNormal3fv(N002);
  30.863 +    glVertex3fv(P002);
  30.864 +    glNormal3fv(N048);
  30.865 +    glVertex3fv(P048);
  30.866 +    glNormal3fv(N049);
  30.867 +    glVertex3fv(P049);
  30.868 +    glEnd();
  30.869 +    glBegin(GL_POLYGON);
  30.870 +    glNormal3fv(N002);
  30.871 +    glVertex3fv(P002);
  30.872 +    glNormal3fv(N049);
  30.873 +    glVertex3fv(P049);
  30.874 +    glNormal3fv(N050);
  30.875 +    glVertex3fv(P050);
  30.876 +    glEnd();
  30.877 +    glBegin(GL_POLYGON);
  30.878 +    glNormal3fv(N050);
  30.879 +    glVertex3fv(P050);
  30.880 +    glNormal3fv(N051);
  30.881 +    glVertex3fv(P051);
  30.882 +    glNormal3fv(N069);
  30.883 +    glVertex3fv(P069);
  30.884 +    glEnd();
  30.885 +    glBegin(GL_POLYGON);
  30.886 +    glNormal3fv(N051);
  30.887 +    glVertex3fv(P051);
  30.888 +    glNormal3fv(N002);
  30.889 +    glVertex3fv(P002);
  30.890 +    glNormal3fv(N069);
  30.891 +    glVertex3fv(P069);
  30.892 +    glEnd();
  30.893 +    glBegin(GL_POLYGON);
  30.894 +    glNormal3fv(N050);
  30.895 +    glVertex3fv(P050);
  30.896 +    glNormal3fv(N069);
  30.897 +    glVertex3fv(P069);
  30.898 +    glNormal3fv(N002);
  30.899 +    glVertex3fv(P002);
  30.900 +    glEnd();
  30.901 +}
  30.902 +
  30.903 +void
  30.904 +Fish006(void)
  30.905 +{
  30.906 +    glBegin(GL_POLYGON);
  30.907 +    glNormal3fv(N066);
  30.908 +    glVertex3fv(P066);
  30.909 +    glNormal3fv(N016);
  30.910 +    glVertex3fv(P016);
  30.911 +    glNormal3fv(N026);
  30.912 +    glVertex3fv(P026);
  30.913 +    glEnd();
  30.914 +    glBegin(GL_POLYGON);
  30.915 +    glNormal3fv(N015);
  30.916 +    glVertex3fv(P015);
  30.917 +    glNormal3fv(N066);
  30.918 +    glVertex3fv(P066);
  30.919 +    glNormal3fv(N025);
  30.920 +    glVertex3fv(P025);
  30.921 +    glEnd();
  30.922 +    glBegin(GL_POLYGON);
  30.923 +    glNormal3fv(N025);
  30.924 +    glVertex3fv(P025);
  30.925 +    glNormal3fv(N066);
  30.926 +    glVertex3fv(P066);
  30.927 +    glNormal3fv(N026);
  30.928 +    glVertex3fv(P026);
  30.929 +    glEnd();
  30.930 +    glBegin(GL_POLYGON);
  30.931 +    glNormal3fv(N066);
  30.932 +    glVertex3fv(P066);
  30.933 +    glNormal3fv(N058);
  30.934 +    glVertex3fv(P058);
  30.935 +    glNormal3fv(N016);
  30.936 +    glVertex3fv(P016);
  30.937 +    glEnd();
  30.938 +    glBegin(GL_POLYGON);
  30.939 +    glNormal3fv(N015);
  30.940 +    glVertex3fv(P015);
  30.941 +    glNormal3fv(N058);
  30.942 +    glVertex3fv(P058);
  30.943 +    glNormal3fv(N066);
  30.944 +    glVertex3fv(P066);
  30.945 +    glEnd();
  30.946 +    glBegin(GL_POLYGON);
  30.947 +    glNormal3fv(N058);
  30.948 +    glVertex3fv(P058);
  30.949 +    glNormal3fv(N015);
  30.950 +    glVertex3fv(P015);
  30.951 +    glNormal3fv(N016);
  30.952 +    glVertex3fv(P016);
  30.953 +    glEnd();
  30.954 +}
  30.955 +
  30.956 +void
  30.957 +Fish007(void)
  30.958 +{
  30.959 +    glBegin(GL_POLYGON);
  30.960 +    glNormal3fv(N062);
  30.961 +    glVertex3fv(P062);
  30.962 +    glNormal3fv(N022);
  30.963 +    glVertex3fv(P022);
  30.964 +    glNormal3fv(N032);
  30.965 +    glVertex3fv(P032);
  30.966 +    glEnd();
  30.967 +    glBegin(GL_POLYGON);
  30.968 +    glNormal3fv(N062);
  30.969 +    glVertex3fv(P062);
  30.970 +    glNormal3fv(N032);
  30.971 +    glVertex3fv(P032);
  30.972 +    glNormal3fv(N064);
  30.973 +    glVertex3fv(P064);
  30.974 +    glEnd();
  30.975 +    glBegin(GL_POLYGON);
  30.976 +    glNormal3fv(N022);
  30.977 +    glVertex3fv(P022);
  30.978 +    glNormal3fv(N062);
  30.979 +    glVertex3fv(P062);
  30.980 +    glNormal3fv(N032);
  30.981 +    glVertex3fv(P032);
  30.982 +    glEnd();
  30.983 +    glBegin(GL_POLYGON);
  30.984 +    glNormal3fv(N062);
  30.985 +    glVertex3fv(P062);
  30.986 +    glNormal3fv(N064);
  30.987 +    glVertex3fv(P064);
  30.988 +    glNormal3fv(N032);
  30.989 +    glVertex3fv(P032);
  30.990 +    glEnd();
  30.991 +}
  30.992 +
  30.993 +void
  30.994 +Fish008(void)
  30.995 +{
  30.996 +    glBegin(GL_POLYGON);
  30.997 +    glNormal3fv(N063);
  30.998 +    glVertex3fv(P063);
  30.999 +    glNormal3fv(N019);
 30.1000 +    glVertex3fv(P019);
 30.1001 +    glNormal3fv(N029);
 30.1002 +    glVertex3fv(P029);
 30.1003 +    glEnd();
 30.1004 +    glBegin(GL_POLYGON);
 30.1005 +    glNormal3fv(N019);
 30.1006 +    glVertex3fv(P019);
 30.1007 +    glNormal3fv(N063);
 30.1008 +    glVertex3fv(P063);
 30.1009 +    glNormal3fv(N029);
 30.1010 +    glVertex3fv(P029);
 30.1011 +    glEnd();
 30.1012 +    glBegin(GL_POLYGON);
 30.1013 +    glNormal3fv(N063);
 30.1014 +    glVertex3fv(P063);
 30.1015 +    glNormal3fv(N029);
 30.1016 +    glVertex3fv(P029);
 30.1017 +    glNormal3fv(N065);
 30.1018 +    glVertex3fv(P065);
 30.1019 +    glEnd();
 30.1020 +    glBegin(GL_POLYGON);
 30.1021 +    glNormal3fv(N063);
 30.1022 +    glVertex3fv(P063);
 30.1023 +    glNormal3fv(N065);
 30.1024 +    glVertex3fv(P065);
 30.1025 +    glNormal3fv(N029);
 30.1026 +    glVertex3fv(P029);
 30.1027 +    glEnd();
 30.1028 +}
 30.1029 +
 30.1030 +void
 30.1031 +Fish009(void)
 30.1032 +{
 30.1033 +    glBegin(GL_POLYGON);
 30.1034 +    glVertex3fv(P059);
 30.1035 +    glVertex3fv(P012);
 30.1036 +    glVertex3fv(P009);
 30.1037 +    glVertex3fv(P060);
 30.1038 +    glEnd();
 30.1039 +    glBegin(GL_POLYGON);
 30.1040 +    glVertex3fv(P012);
 30.1041 +    glVertex3fv(P004);
 30.1042 +    glVertex3fv(P007);
 30.1043 +    glVertex3fv(P009);
 30.1044 +    glEnd();
 30.1045 +}
 30.1046 +
 30.1047 +void
 30.1048 +Fish_1(void)
 30.1049 +{
 30.1050 +    Fish004();
 30.1051 +    Fish005();
 30.1052 +    Fish003();
 30.1053 +    Fish007();
 30.1054 +    Fish006();
 30.1055 +    Fish002();
 30.1056 +    Fish008();
 30.1057 +    Fish009();
 30.1058 +    Fish001();
 30.1059 +}
 30.1060 +
 30.1061 +void
 30.1062 +Fish_2(void)
 30.1063 +{
 30.1064 +    Fish005();
 30.1065 +    Fish004();
 30.1066 +    Fish003();
 30.1067 +    Fish008();
 30.1068 +    Fish006();
 30.1069 +    Fish002();
 30.1070 +    Fish007();
 30.1071 +    Fish009();
 30.1072 +    Fish001();
 30.1073 +}
 30.1074 +
 30.1075 +void
 30.1076 +Fish_3(void)
 30.1077 +{
 30.1078 +    Fish005();
 30.1079 +    Fish004();
 30.1080 +    Fish007();
 30.1081 +    Fish003();
 30.1082 +    Fish002();
 30.1083 +    Fish008();
 30.1084 +    Fish009();
 30.1085 +    Fish001();
 30.1086 +    Fish006();
 30.1087 +}
 30.1088 +
 30.1089 +void
 30.1090 +Fish_4(void)
 30.1091 +{
 30.1092 +    Fish005();
 30.1093 +    Fish004();
 30.1094 +    Fish008();
 30.1095 +    Fish003();
 30.1096 +    Fish002();
 30.1097 +    Fish007();
 30.1098 +    Fish009();
 30.1099 +    Fish001();
 30.1100 +    Fish006();
 30.1101 +}
 30.1102 +
 30.1103 +void
 30.1104 +Fish_5(void)
 30.1105 +{
 30.1106 +    Fish009();
 30.1107 +    Fish006();
 30.1108 +    Fish007();
 30.1109 +    Fish001();
 30.1110 +    Fish002();
 30.1111 +    Fish003();
 30.1112 +    Fish008();
 30.1113 +    Fish004();
 30.1114 +    Fish005();
 30.1115 +}
 30.1116 +
 30.1117 +void
 30.1118 +Fish_6(void)
 30.1119 +{
 30.1120 +    Fish009();
 30.1121 +    Fish006();
 30.1122 +    Fish008();
 30.1123 +    Fish001();
 30.1124 +    Fish002();
 30.1125 +    Fish007();
 30.1126 +    Fish003();
 30.1127 +    Fish004();
 30.1128 +    Fish005();
 30.1129 +}
 30.1130 +
 30.1131 +void
 30.1132 +Fish_7(void)
 30.1133 +{
 30.1134 +    Fish009();
 30.1135 +    Fish001();
 30.1136 +    Fish007();
 30.1137 +    Fish005();
 30.1138 +    Fish002();
 30.1139 +    Fish008();
 30.1140 +    Fish003();
 30.1141 +    Fish004();
 30.1142 +    Fish006();
 30.1143 +}
 30.1144 +
 30.1145 +void
 30.1146 +Fish_8(void)
 30.1147 +{
 30.1148 +    Fish009();
 30.1149 +    Fish008();
 30.1150 +    Fish001();
 30.1151 +    Fish002();
 30.1152 +    Fish007();
 30.1153 +    Fish003();
 30.1154 +    Fish005();
 30.1155 +    Fish004();
 30.1156 +    Fish006();
 30.1157 +}
 30.1158 +
 30.1159 +void
 30.1160 +DrawShark(fishRec * fish)
 30.1161 +{
 30.1162 +    float mat[4][4];
 30.1163 +    int n;
 30.1164 +    float seg1, seg2, seg3, seg4, segup;
 30.1165 +    float thrash, chomp;
 30.1166 +
 30.1167 +    fish->htail = (int) (fish->htail - (int) (5.0 * fish->v)) % 360;
 30.1168 +
 30.1169 +    thrash = 50.0 * fish->v;
 30.1170 +
 30.1171 +    seg1 = 0.6 * thrash * sin(fish->htail * RRAD);
 30.1172 +    seg2 = 1.8 * thrash * sin((fish->htail + 45.0) * RRAD);
 30.1173 +    seg3 = 3.0 * thrash * sin((fish->htail + 90.0) * RRAD);
 30.1174 +    seg4 = 4.0 * thrash * sin((fish->htail + 110.0) * RRAD);
 30.1175 +
 30.1176 +    chomp = 0.0;
 30.1177 +    if (fish->v > 2.0) {
 30.1178 +        chomp = -(fish->v - 2.0) * 200.0;
 30.1179 +    }
 30.1180 +    P004[1] = iP004[1] + chomp;
 30.1181 +    P007[1] = iP007[1] + chomp;
 30.1182 +    P010[1] = iP010[1] + chomp;
 30.1183 +    P011[1] = iP011[1] + chomp;
 30.1184 +
 30.1185 +    P023[0] = iP023[0] + seg1;
 30.1186 +    P024[0] = iP024[0] + seg1;
 30.1187 +    P025[0] = iP025[0] + seg1;
 30.1188 +    P026[0] = iP026[0] + seg1;
 30.1189 +    P027[0] = iP027[0] + seg1;
 30.1190 +    P028[0] = iP028[0] + seg1;
 30.1191 +    P029[0] = iP029[0] + seg1;
 30.1192 +    P030[0] = iP030[0] + seg1;
 30.1193 +    P031[0] = iP031[0] + seg1;
 30.1194 +    P032[0] = iP032[0] + seg1;
 30.1195 +    P033[0] = iP033[0] + seg2;
 30.1196 +    P034[0] = iP034[0] + seg2;
 30.1197 +    P035[0] = iP035[0] + seg2;
 30.1198 +    P036[0] = iP036[0] + seg2;
 30.1199 +    P037[0] = iP037[0] + seg2;
 30.1200 +    P038[0] = iP038[0] + seg2;
 30.1201 +    P039[0] = iP039[0] + seg2;
 30.1202 +    P040[0] = iP040[0] + seg2;
 30.1203 +    P041[0] = iP041[0] + seg2;
 30.1204 +    P042[0] = iP042[0] + seg2;
 30.1205 +    P043[0] = iP043[0] + seg3;
 30.1206 +    P044[0] = iP044[0] + seg3;
 30.1207 +    P045[0] = iP045[0] + seg3;
 30.1208 +    P046[0] = iP046[0] + seg3;
 30.1209 +    P047[0] = iP047[0] + seg3;
 30.1210 +    P048[0] = iP048[0] + seg3;
 30.1211 +    P049[0] = iP049[0] + seg3;
 30.1212 +    P050[0] = iP050[0] + seg3;
 30.1213 +    P051[0] = iP051[0] + seg3;
 30.1214 +    P052[0] = iP052[0] + seg3;
 30.1215 +    P002[0] = iP002[0] + seg4;
 30.1216 +    P061[0] = iP061[0] + seg4;
 30.1217 +    P069[0] = iP069[0] + seg4;
 30.1218 +    P070[0] = iP070[0] + seg4;
 30.1219 +
 30.1220 +    fish->vtail += ((fish->dtheta - fish->vtail) * 0.1);
 30.1221 +
 30.1222 +    if (fish->vtail > 0.5) {
 30.1223 +        fish->vtail = 0.5;
 30.1224 +    } else if (fish->vtail < -0.5) {
 30.1225 +        fish->vtail = -0.5;
 30.1226 +    }
 30.1227 +    segup = thrash * fish->vtail;
 30.1228 +
 30.1229 +    P023[1] = iP023[1] + segup;
 30.1230 +    P024[1] = iP024[1] + segup;
 30.1231 +    P025[1] = iP025[1] + segup;
 30.1232 +    P026[1] = iP026[1] + segup;
 30.1233 +    P027[1] = iP027[1] + segup;
 30.1234 +    P028[1] = iP028[1] + segup;
 30.1235 +    P029[1] = iP029[1] + segup;
 30.1236 +    P030[1] = iP030[1] + segup;
 30.1237 +    P031[1] = iP031[1] + segup;
 30.1238 +    P032[1] = iP032[1] + segup;
 30.1239 +    P033[1] = iP033[1] + segup * 5.0;
 30.1240 +    P034[1] = iP034[1] + segup * 5.0;
 30.1241 +    P035[1] = iP035[1] + segup * 5.0;
 30.1242 +    P036[1] = iP036[1] + segup * 5.0;
 30.1243 +    P037[1] = iP037[1] + segup * 5.0;
 30.1244 +    P038[1] = iP038[1] + segup * 5.0;
 30.1245 +    P039[1] = iP039[1] + segup * 5.0;
 30.1246 +    P040[1] = iP040[1] + segup * 5.0;
 30.1247 +    P041[1] = iP041[1] + segup * 5.0;
 30.1248 +    P042[1] = iP042[1] + segup * 5.0;
 30.1249 +    P043[1] = iP043[1] + segup * 12.0;
 30.1250 +    P044[1] = iP044[1] + segup * 12.0;
 30.1251 +    P045[1] = iP045[1] + segup * 12.0;
 30.1252 +    P046[1] = iP046[1] + segup * 12.0;
 30.1253 +    P047[1] = iP047[1] + segup * 12.0;
 30.1254 +    P048[1] = iP048[1] + segup * 12.0;
 30.1255 +    P049[1] = iP049[1] + segup * 12.0;
 30.1256 +    P050[1] = iP050[1] + segup * 12.0;
 30.1257 +    P051[1] = iP051[1] + segup * 12.0;
 30.1258 +    P052[1] = iP052[1] + segup * 12.0;
 30.1259 +    P002[1] = iP002[1] + segup * 17.0;
 30.1260 +    P061[1] = iP061[1] + segup * 17.0;
 30.1261 +    P069[1] = iP069[1] + segup * 17.0;
 30.1262 +    P070[1] = iP070[1] + segup * 17.0;
 30.1263 +
 30.1264 +    glPushMatrix();
 30.1265 +
 30.1266 +    glTranslatef(0.0, 0.0, -3000.0);
 30.1267 +
 30.1268 +    glGetFloatv(GL_MODELVIEW_MATRIX, &mat[0][0]);
 30.1269 +    n = 0;
 30.1270 +    if (mat[0][2] >= 0.0) {
 30.1271 +        n += 1;
 30.1272 +    }
 30.1273 +    if (mat[1][2] >= 0.0) {
 30.1274 +        n += 2;
 30.1275 +    }
 30.1276 +    if (mat[2][2] >= 0.0) {
 30.1277 +        n += 4;
 30.1278 +    }
 30.1279 +    glScalef(2.0, 1.0, 1.0);
 30.1280 +
 30.1281 +    glEnable(GL_CULL_FACE);
 30.1282 +    switch (n) {
 30.1283 +    case 0:
 30.1284 +        Fish_1();
 30.1285 +        break;
 30.1286 +    case 1:
 30.1287 +        Fish_2();
 30.1288 +        break;
 30.1289 +    case 2:
 30.1290 +        Fish_3();
 30.1291 +        break;
 30.1292 +    case 3:
 30.1293 +        Fish_4();
 30.1294 +        break;
 30.1295 +    case 4:
 30.1296 +        Fish_5();
 30.1297 +        break;
 30.1298 +    case 5:
 30.1299 +        Fish_6();
 30.1300 +        break;
 30.1301 +    case 6:
 30.1302 +        Fish_7();
 30.1303 +        break;
 30.1304 +    case 7:
 30.1305 +        Fish_8();
 30.1306 +        break;
 30.1307 +    }
 30.1308 +    glDisable(GL_CULL_FACE);
 30.1309 +
 30.1310 +    glPopMatrix();
 30.1311 +}
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/swim.c	Tue Sep 29 07:59:23 2009 +0000
    31.3 @@ -0,0 +1,188 @@
    31.4 +/**
    31.5 + * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
    31.6 + * ALL RIGHTS RESERVED
    31.7 + * Permission to use, copy, modify, and distribute this software for
    31.8 + * any purpose and without fee is hereby granted, provided that the above
    31.9 + * copyright notice appear in all copies and that both the copyright notice
   31.10 + * and this permission notice appear in supporting documentation, and that
   31.11 + * the name of Silicon Graphics, Inc. not be used in advertising
   31.12 + * or publicity pertaining to distribution of the software without specific,
   31.13 + * written prior permission.
   31.14 + *
   31.15 + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
   31.16 + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
   31.17 + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
   31.18 + * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
   31.19 + * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
   31.20 + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
   31.21 + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
   31.22 + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
   31.23 + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
   31.24 + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
   31.25 + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
   31.26 + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
   31.27 + *
   31.28 + * US Government Users Restricted Rights
   31.29 + * Use, duplication, or disclosure by the Government is subject to
   31.30 + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
   31.31 + * (c)(1)(ii) of the Rights in Technical Data and Computer Software
   31.32 + * clause at DFARS 252.227-7013 and/or in similar or successor
   31.33 + * clauses in the FAR or the DOD or NASA FAR Supplement.
   31.34 + * Unpublished-- rights reserved under the copyright laws of the
   31.35 + * United States.  Contractor/manufacturer is Silicon Graphics,
   31.36 + * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
   31.37 + *
   31.38 + * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
   31.39 + */
   31.40 +#include <math.h>
   31.41 +#include <stdlib.h>  /* For rand(). */
   31.42 +#include <GLUT/glut.h>
   31.43 +#include "atlantis.h"
   31.44 +
   31.45 +void
   31.46 +FishTransform(fishRec * fish)
   31.47 +{
   31.48 +
   31.49 +    glTranslatef(fish->y, fish->z, -fish->x);
   31.50 +    glRotatef(-fish->psi, 0.0, 1.0, 0.0);
   31.51 +    glRotatef(fish->theta, 1.0, 0.0, 0.0);
   31.52 +    glRotatef(-fish->phi, 0.0, 0.0, 1.0);
   31.53 +}
   31.54 +
   31.55 +void
   31.56 +WhalePilot(fishRec * fish)
   31.57 +{
   31.58 +
   31.59 +    fish->phi = -20.0;
   31.60 +    fish->theta = 0.0;
   31.61 +    fish->psi -= 0.5;
   31.62 +
   31.63 +    fish->x += WHALESPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
   31.64 +    fish->y += WHALESPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
   31.65 +    fish->z += WHALESPEED * fish->v * sin(fish->theta / RAD);
   31.66 +}
   31.67 +
   31.68 +void
   31.69 +SharkPilot(fishRec * fish)
   31.70 +{
   31.71 +    static int sign = 1;
   31.72 +    float X, Y, Z, tpsi, ttheta, thetal;
   31.73 +
   31.74 +    fish->xt = 60000.0;
   31.75 +    fish->yt = 0.0;
   31.76 +    fish->zt = 0.0;
   31.77 +
   31.78 +    X = fish->xt - fish->x;
   31.79 +    Y = fish->yt - fish->y;
   31.80 +    Z = fish->zt - fish->z;
   31.81 +
   31.82 +    thetal = fish->theta;
   31.83 +
   31.84 +    ttheta = RAD * atan(Z / (sqrt(X * X + Y * Y)));
   31.85 +
   31.86 +    if (ttheta > fish->theta + 0.25) {
   31.87 +        fish->theta += 0.5;
   31.88 +    } else if (ttheta < fish->theta - 0.25) {
   31.89 +        fish->theta -= 0.5;
   31.90 +    }
   31.91 +    if (fish->theta > 90.0) {
   31.92 +        fish->theta = 90.0;
   31.93 +    }
   31.94 +    if (fish->theta < -90.0) {
   31.95 +        fish->theta = -90.0;
   31.96 +    }
   31.97 +    fish->dtheta = fish->theta - thetal;
   31.98 +
   31.99 +    tpsi = RAD * atan2(Y, X);
  31.100 +
  31.101 +    fish->attack = 0;
  31.102 +
  31.103 +    if (fabs(tpsi - fish->psi) < 10.0) {
  31.104 +        fish->attack = 1;
  31.105 +    } else if (fabs(tpsi - fish->psi) < 45.0) {
  31.106 +        if (fish->psi > tpsi) {
  31.107 +            fish->psi -= 0.5;
  31.108 +            if (fish->psi < -180.0) {
  31.109 +                fish->psi += 360.0;
  31.110 +            }
  31.111 +        } else if (fish->psi < tpsi) {
  31.112 +            fish->psi += 0.5;
  31.113 +            if (fish->psi > 180.0) {
  31.114 +                fish->psi -= 360.0;
  31.115 +            }
  31.116 +        }
  31.117 +    } else {
  31.118 +        if (rand() % 100 > 98) {
  31.119 +            sign = 1 - sign;
  31.120 +        }
  31.121 +        fish->psi += sign;
  31.122 +        if (fish->psi > 180.0) {
  31.123 +            fish->psi -= 360.0;
  31.124 +        }
  31.125 +        if (fish->psi < -180.0) {
  31.126 +            fish->psi += 360.0;
  31.127 +        }
  31.128 +    }
  31.129 +
  31.130 +    if (fish->attack) {
  31.131 +        if (fish->v < 1.1) {
  31.132 +            fish->spurt = 1;
  31.133 +        }
  31.134 +        if (fish->spurt) {
  31.135 +            fish->v += 0.2;
  31.136 +        }
  31.137 +        if (fish->v > 5.0) {
  31.138 +            fish->spurt = 0;
  31.139 +        }
  31.140 +        if ((fish->v > 1.0) && (!fish->spurt)) {
  31.141 +            fish->v -= 0.2;
  31.142 +        }
  31.143 +    } else {
  31.144 +        if (!(rand() % 400) && (!fish->spurt)) {
  31.145 +            fish->spurt = 1;
  31.146 +        }
  31.147 +        if (fish->spurt) {
  31.148 +            fish->v += 0.05;
  31.149 +        }
  31.150 +        if (fish->v > 3.0) {
  31.151 +            fish->spurt = 0;
  31.152 +        }
  31.153 +        if ((fish->v > 1.0) && (!fish->spurt)) {
  31.154 +            fish->v -= 0.05;
  31.155 +        }
  31.156 +    }
  31.157 +
  31.158 +    fish->x += SHARKSPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD);
  31.159 +    fish->y += SHARKSPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD);
  31.160 +    fish->z += SHARKSPEED * fish->v * sin(fish->theta / RAD);
  31.161 +}
  31.162 +
  31.163 +void
  31.164 +SharkMiss(int i)
  31.165 +{
  31.166 +    int j;
  31.167 +    float avoid, thetal;
  31.168 +    float X, Y, Z, R;
  31.169 +
  31.170 +    for (j = 0; j < NUM_SHARKS; j++) {
  31.171 +        if (j != i) {
  31.172 +            X = sharks[j].x - sharks[i].x;
  31.173 +            Y = sharks[j].y - sharks[i].y;
  31.174 +            Z = sharks[j].z - sharks[i].z;
  31.175 +
  31.176 +            R = sqrt(X * X + Y * Y + Z * Z);
  31.177 +
  31.178 +            avoid = 1.0;
  31.179 +            thetal = sharks[i].theta;
  31.180 +
  31.181 +            if (R < SHARKSIZE) {
  31.182 +                if (Z > 0.0) {
  31.183 +                    sharks[i].theta -= avoid;
  31.184 +                } else {
  31.185 +                    sharks[i].theta += avoid;
  31.186 +                }
  31.187 +            }
  31.188 +            sharks[i].dtheta += (sharks[i].theta - thetal);
  31.189 +        }
  31.190 +    }
  31.191 +}
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/Xcode/TemplatesForXcodeTiger/SDL OpenGL Application/atlantis/whale.c	Tue Sep 29 07:59:23 2009 +0000
    32.3 @@ -0,0 +1,1798 @@
    32.4 +/**
    32.5 + * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
    32.6 + * ALL RIGHTS RESERVED
    32.7 + * Permission to use, copy, modify, and distribute this software for
    32.8 + * any purpose and without fee is hereby granted, provided that the above
    32.9 + * copyright notice appear in all copies and that both the copyright notice
   32.10 + * and this permission notice appear in supporting documentation, and that
   32.11 + * the name of Silicon Graphics, Inc. not be used in advertising
   32.12 + * or publicity pertaining to distribution of the software without specific,
   32.13 + * written prior permission.
   32.14 + *
   32.15 + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
   32.16 + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
   32.17 + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
   32.18 + * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
   32.19 + * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
   32.20 + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
   32.21 + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
   32.22 + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
   32.23 + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
   32.24 + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
   32.25 + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
   32.26 + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
   32.27 + *
   32.28 + * US Government Users Restricted Rights
   32.29 + * Use, duplication, or disclosure by the Government is subject to
   32.30 + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
   32.31 + * (c)(1)(ii) of the Rights in Technical Data and Computer Software
   32.32 + * clause at DFARS 252.227-7013 and/or in similar or successor
   32.33 + * clauses in the FAR or the DOD or NASA FAR Supplement.
   32.34 + * Unpublished-- rights reserved under the copyright laws of the
   32.35 + * United States.  Contractor/manufacturer is Silicon Graphics,
   32.36 + * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
   32.37 + *
   32.38 + * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
   32.39 + */
   32.40 +#include <GLUT/glut.h>
   32.41 +#include <math.h>
   32.42 +#include "atlantis.h"
   32.43 +/* *INDENT-OFF* */
   32.44 +static float N001[3] = {0.019249 ,0.011340 ,-0.999750};
   32.45 +static float N002[3] = {-0.132579 ,0.954547 ,0.266952};
   32.46 +static float N003[3] = {-0.196061 ,0.980392 ,-0.019778};
   32.47 +static float N004[3] = {0.695461 ,0.604704 ,0.388158};
   32.48 +static float N005[3] = {0.870600 ,0.425754 ,0.246557};
   32.49 +static float N006[3] = {-0.881191 ,0.392012 ,0.264251};
   32.50 +static float N008[3] = {-0.341437 ,0.887477 ,0.309523};
   32.51 +static float N009[3] = {0.124035 ,-0.992278 ,0.000000};
   32.52 +static float N010[3] = {0.242536 ,0.000000 ,-0.970143};
   32.53 +static float N011[3] = {0.588172 ,0.000000 ,0.808736};
   32.54 +static float N012[3] = {0.929824 ,-0.340623 ,-0.139298};
   32.55 +static float N013[3] = {0.954183 ,0.267108 ,-0.134865};
   32.56 +static float N014[3] = {0.495127 ,0.855436 ,-0.151914};
   32.57 +static float N015[3] = {-0.390199 ,0.906569 ,-0.160867};
   32.58 +static float N016[3] = {-0.923605 ,0.354581 ,-0.145692};
   32.59 +static float N017[3] = {-0.955796 ,-0.260667 ,-0.136036};
   32.60 +static float N018[3] = {-0.501283 ,-0.853462 ,-0.142540};
   32.61 +static float N019[3] = {0.405300 ,-0.901974 ,-0.148913};
   32.62 +static float N020[3] = {0.909913 ,-0.392746 ,-0.133451};
   32.63 +static float N021[3] = {0.936494 ,0.331147 ,-0.115414};
   32.64 +static float N022[3] = {0.600131 ,0.793724 ,-0.099222};
   32.65 +static float N023[3] = {-0.231556 ,0.968361 ,-0.093053};
   32.66 +static float N024[3] = {-0.844369 ,0.525330 ,-0.105211};
   32.67 +static float N025[3] = {-0.982725 ,-0.136329 ,-0.125164};
   32.68 +static float N026[3] = {-0.560844 ,-0.822654 ,-0.093241};
   32.69 +static float N027[3] = {0.263884 ,-0.959981 ,-0.093817};
   32.70 +static float N028[3] = {0.842057 ,-0.525192 ,-0.122938};
   32.71 +static float N029[3] = {0.921620 ,0.367565 ,-0.124546};
   32.72 +static float N030[3] = {0.613927 ,0.784109 ,-0.090918};
   32.73 +static float N031[3] = {-0.448754 ,0.888261 ,-0.098037};
   32.74 +static float N032[3] = {-0.891865 ,0.434376 ,-0.126077};
   32.75 +static float N033[3] = {-0.881447 ,-0.448017 ,-0.149437};
   32.76 +static float N034[3] = {-0.345647 ,-0.922057 ,-0.174183};
   32.77 +static float N035[3] = {0.307998 ,-0.941371 ,-0.137688};
   32.78 +static float N036[3] = {0.806316 ,-0.574647 ,-0.140124};
   32.79 +static float N037[3] = {0.961346 ,0.233646 ,-0.145681};
   32.80 +static float N038[3] = {0.488451 ,0.865586 ,-0.110351};
   32.81 +static float N039[3] = {-0.374290 ,0.921953 ,-0.099553};
   32.82 +static float N040[3] = {-0.928504 ,0.344533 ,-0.138485};
   32.83 +static float N041[3] = {-0.918419 ,-0.371792 ,-0.135189};
   32.84 +static float N042[3] = {-0.520666 ,-0.833704 ,-0.183968};
   32.85 +static float N043[3] = {0.339204 ,-0.920273 ,-0.195036};
   32.86 +static float N044[3] = {0.921475 ,-0.387382 ,-0.028636};
   32.87 +static float N045[3] = {0.842465 ,0.533335 ,-0.076204};
   32.88 +static float N046[3] = {0.380110 ,0.924939 ,0.002073};
   32.89 +static float N047[3] = {-0.276128 ,0.961073 ,-0.009579};
   32.90 +static float N048[3] = {-0.879684 ,0.473001 ,-0.049250};
   32.91 +static float N049[3] = {-0.947184 ,-0.317614 ,-0.044321};
   32.92 +static float N050[3] = {-0.642059 ,-0.764933 ,-0.051363};
   32.93 +static float N051[3] = {0.466794 ,-0.880921 ,-0.077990};
   32.94 +static float N052[3] = {0.898509 ,-0.432277 ,0.076279};
   32.95 +static float N053[3] = {0.938985 ,0.328141 ,0.103109};
   32.96 +static float N054[3] = {0.442420 ,0.895745 ,0.043647};
   32.97 +static float N055[3] = {-0.255163 ,0.966723 ,0.018407};
   32.98 +static float N056[3] = {-0.833769 ,0.540650 ,0.111924};
   32.99 +static float N057[3] = {-0.953653 ,-0.289939 ,0.080507};
  32.100 +static float N058[3] = {-0.672357 ,-0.730524 ,0.119461};
  32.101 +static float N059[3] = {0.522249 ,-0.846652 ,0.102157};
  32.102 +static float N060[3] = {0.885868 ,-0.427631 ,0.179914};
  32.103 +static float N062[3] = {0.648942 ,0.743116 ,0.163255};
  32.104 +static float N063[3] = {-0.578967 ,0.807730 ,0.111219};
  32.105 +static float N065[3] = {-0.909864 ,-0.352202 ,0.219321};
  32.106 +static float N066[3] = {-0.502541 ,-0.818090 ,0.279610};
  32.107 +static float N067[3] = {0.322919 ,-0.915358 ,0.240504};
  32.108 +static float N068[3] = {0.242536 ,0.000000 ,-0.970143};
  32.109 +static float N069[3] = {0.000000 ,1.000000 ,0.000000};
  32.110 +static float N070[3] = {0.000000 ,1.000000 ,0.000000};
  32.111 +static float N071[3] = {0.000000 ,1.000000 ,0.000000};
  32.112 +static float N072[3] = {0.000000 ,1.000000 ,0.000000};
  32.113 +static float N073[3] = {0.000000 ,1.000000 ,0.000000};
  32.114 +static float N074[3] = {0.000000 ,1.000000 ,0.000000};
  32.115 +static float N075[3] = {0.031220 ,0.999025 ,-0.031220};
  32.116 +static float N076[3] = {0.000000 ,1.000000 ,0.000000};
  32.117 +static float N077[3] = {0.446821 ,0.893642 ,0.041889};
  32.118 +static float N078[3] = {0.863035 ,-0.100980 ,0.494949};
  32.119 +static float N079[3] = {0.585597 ,-0.808215 ,0.062174};
  32.120 +static float N080[3] = {0.000000 ,1.000000 ,0.000000};
  32.121 +static float N081[3] = {1.000000 ,0.000000 ,0.000000};
  32.122 +static float N082[3] = {0.000000 ,1.000000 ,0.000000};
  32.123 +static float N083[3] = {-1.000000 ,0.000000 ,0.000000};
  32.124 +static float N084[3] = {-0.478893 ,0.837129 ,-0.264343};
  32.125 +static float N085[3] = {0.000000 ,1.000000 ,0.000000};
  32.126 +static float N086[3] = {0.763909 ,0.539455 ,-0.354163};
  32.127 +static float N087[3] = {0.446821 ,0.893642 ,0.041889};
  32.128 +static float N088[3] = {0.385134 ,-0.908288 ,0.163352};
  32.129 +static float N089[3] = {-0.605952 ,0.779253 ,-0.159961};
  32.130 +static float N090[3] = {0.000000 ,1.000000 ,0.000000};
  32.131 +static float N091[3] = {0.000000 ,1.000000 ,0.000000};
  32.132 +static float N092[3] = {0.000000 ,1.000000 ,0.000000};
  32.133 +static float N093[3] = {0.000000 ,1.000000 ,0.000000};
  32.134 +static float N094[3] = {1.000000 ,0.000000 ,0.000000};
  32.135 +static float N095[3] = {-1.000000 ,0.000000 ,0.000000};
  32.136 +static float N096[3] = {0.644444 ,-0.621516 ,0.445433};
  32.137 +static float N097[3] = {-0.760896 ,-0.474416 ,0.442681};
  32.138 +static float N098[3] = {0.636888 ,-0.464314 ,0.615456};
  32.139 +static float N099[3] = {-0.710295 ,0.647038 ,0.277168};
  32.140 +static float N100[3] = {0.009604 ,0.993655 ,0.112063};
  32.141 +static float iP001[3] = {18.74, 13.19, 3.76};
  32.142 +static float P001[3] = {18.74, 13.19, 3.76};
  32.143 +static float P002[3] = {0.00, 390.42, 10292.57};
  32.144 +static float P003[3] = {55.80, 622.31, 8254.35};
  32.145 +static float P004[3] = {20.80, 247.66, 10652.13};
  32.146 +static float P005[3] = {487.51, 198.05, 9350.78};
  32.147 +static float P006[3] = {-457.61, 199.04, 9353.01};
  32.148 +static float P008[3] = {-34.67, 247.64, 10663.71};
  32.149 +static float iP009[3] = {97.46, 67.63, 593.82};
  32.150 +static float iP010[3] = {-84.33, 67.63, 588.18};
  32.151 +static float iP011[3] = {118.69, 8.98, -66.91};
  32.152 +static float P009[3] = {97.46, 67.63, 593.82};
  32.153 +static float P010[3] = {-84.33, 67.63, 588.18};
  32.154 +static float P011[3] = {118.69, 8.98, -66.91};
  32.155 +static float iP012[3] = {156.48, -31.95, 924.54};
  32.156 +static float iP013[3] = {162.00, 110.22, 924.54};
  32.157 +static float iP014[3] = {88.16, 221.65, 924.54};
  32.158 +static float iP015[3] = {-65.21, 231.16, 924.54};
  32.159 +static float iP016[3] = {-156.48, 121.97, 924.54};
  32.160 +static float iP017[3] = {-162.00, -23.93, 924.54};
  32.161 +static float iP018[3] = {-88.16, -139.10, 924.54};
  32.162 +static float iP019[3] = {65.21, -148.61, 924.54};
  32.163 +static float iP020[3] = {246.87, -98.73, 1783.04};
  32.164 +static float iP021[3] = {253.17, 127.76, 1783.04};
  32.165 +static float iP022[3] = {132.34, 270.77, 1783.04};
  32.166 +static float iP023[3] = {-97.88, 285.04, 1783.04};
  32.167 +static float iP024[3] = {-222.97, 139.80, 1783.04};
  32.168 +static float iP025[3] = {-225.29, -86.68, 1783.04};
  32.169 +static float iP026[3] = {-108.44, -224.15, 1783.04};
  32.170 +static float iP027[3] = {97.88, -221.56, 1783.04};
  32.171 +static float iP028[3] = {410.55, -200.66, 3213.87};
  32.172 +static float iP029[3] = {432.19, 148.42, 3213.87};
  32.173 +static float iP030[3] = {200.66, 410.55, 3213.87};
  32.174 +static float iP031[3] = {-148.42, 432.19, 3213.87};
  32.175 +static float iP032[3] = {-407.48, 171.88, 3213.87};
  32.176 +static float iP033[3] = {-432.19, -148.42, 3213.87};
  32.177 +static float iP034[3] = {-148.88, -309.74, 3213.87};
  32.178 +static float iP035[3] = {156.38, -320.17, 3213.87};
  32.179 +static float iP036[3] = {523.39, -303.81, 4424.57};
  32.180 +static float iP037[3] = {574.66, 276.84, 4424.57};
  32.181 +static float iP038[3] = {243.05, 492.50, 4424.57};
  32.182 +static float iP039[3] = {-191.23, 520.13, 4424.57};
  32.183 +static float iP040[3] = {-523.39, 304.01, 4424.57};
  32.184 +static float iP041[3] = {-574.66, -231.83, 4424.57};
  32.185 +static float iP042[3] = {-266.95, -578.17, 4424.57};
  32.186 +static float iP043[3] = {211.14, -579.67, 4424.57};
  32.187 +static float iP044[3] = {680.57, -370.27, 5943.46};
  32.188 +static float iP045[3] = {834.01, 363.09, 5943.46};
  32.189 +static float iP046[3] = {371.29, 614.13, 5943.46};
  32.190 +static float iP047[3] = {-291.43, 621.86, 5943.46};
  32.191 +static float iP048[3] = {-784.13, 362.60, 5943.46};
  32.192 +static float iP049[3] = {-743.29, -325.82, 5943.46};
  32.193 +static float iP050[3] = {-383.24, -804.77, 5943.46};
  32.194 +static float iP051[3] = {283.47, -846.09, 5943.46};
  32.195 +static float P012[3] = {156.48, -31.95, 924.54};
  32.196 +static float P013[3] = {162.00, 110.22, 924.54};
  32.197 +static float P014[3] = {88.16, 221.65, 924.54};
  32.198 +static float P015[3] = {-65.21, 231.16, 924.54};
  32.199 +static float P016[3] = {-156.48, 121.97, 924.54};
  32.200 +static float P017[3] = {-162.00, -23.93, 924.54};
  32.201 +static float P018[3] = {-88.16, -139.10, 924.54};
  32.202 +static float P019[3] = {65.21, -148.61, 924.54};
  32.203 +static float P020[3] = {246.87, -98.73, 1783.04};
  32.204 +static float P021[3] = {253.17, 127.76, 1783.04};
  32.205 +static float P022[3] = {132.34, 270.77, 1783.04};
  32.206 +static float P023[3] = {-97.88, 285.04, 1783.04};
  32.207 +static float P024[3] = {-222.97, 139.80, 1783.04};
  32.208 +static float P025[3] = {-225.29, -86.68, 1783.04};
  32.209 +static float P026[3] = {-108.44, -224.15, 1783.04};
  32.210 +static float P027[3] = {97.88, -221.56, 1783.04};
  32.211 +static float P028[3] = {410.55, -200.66, 3213.87};
  32.212 +static float P029[3] = {432.19, 148.42, 3213.87};
  32.213 +static float P030[3] = {200.66, 410.55, 3213.87};
  32.214 +static float P031[3] = {-148.42, 432.19, 3213.87};
  32.215 +static float P032[3] = {-407.48, 171.88, 3213.87};
  32.216 +static float P033[3] = {-432.19, -148.42, 3213.87};
  32.217 +static float P034[3] = {-148.88, -309.74, 3213.87};
  32.218 +static float P035[3] = {156.38, -320.17, 3213.87};
  32.219 +static float P036[3] = {523.39, -303.81, 4424.57};
  32.220 +static float P037[3] = {574.66, 276.84, 4424.57};
  32.221 +static float P038[3] = {243.05, 492.50, 4424.57};
  32.222 +static float P039[3] = {-191.23, 520.13, 4424.57};
  32.223 +static float P040[3] = {-523.39, 304.01, 4424.57};
  32.224 +static float P041[3] = {-574.66, -231.83, 4424.57};
  32.225 +static float P042[3] = {-266.95, -578.17, 4424.57};
  32.226 +static float P043[3] = {211.14, -579.67, 4424.57};
  32.227 +static float P044[3] = {680.57, -370.27, 5943.46};
  32.228 +static float P045[3] = {834.01, 363.09, 5943.46};
  32.229 +static float P046[3] = {371.29, 614.13, 5943.46};
  32.230 +static float P047[3] = {-291.43, 621.86, 5943.46};
  32.231 +static float P048[3] = {-784.13, 362.60, 5943.46};
  32.232 +static float P049[3] = {-743.29, -325.82, 5943.46};
  32.233 +static float P050[3] = {-383.24, -804.77, 5943.46};
  32.234 +static float P051[3] = {283.47, -846.09, 5943.46};
  32.235 +static float P052[3] = {599.09, -332.24, 7902.59};
  32.236 +static float P053[3] = {735.48, 306.26, 7911.92};
  32.237 +static float P054[3] = {321.55, 558.53, 7902.59};
  32.238 +static float P055[3] = {-260.54, 559.84, 7902.59};
  32.239 +static float P056[3] = {-698.66, 320.83, 7902.59};
  32.240 +static float P057[3] = {-643.29, -299.16, 7902.59};
  32.241 +static float P058[3] = {-341.47, -719.30, 7902.59};
  32.242 +static float P059[3] = {252.57, -756.12, 7902.59};
  32.243 +static float P060[3] = {458.39, -265.31, 9355.44};
  32.244 +static float P062[3] = {224.04, 438.98, 9364.77};
  32.245 +static float P063[3] = {-165.71, 441.27, 9355.44};
  32.246 +static float P065[3] = {-473.99, -219.71, 9355.44};
  32.247 +static float P066[3] = {-211.97, -479.87, 9355.44};
  32.248 +static float P067[3] = {192.86, -504.03, 9355.44};
  32.249 +static float iP068[3] = {-112.44, 9.25, -64.42};
  32.250 +static float iP069[3] = {1155.63, 0.00, -182.46};
  32.251 +static float iP070[3] = {-1143.13, 0.00, -181.54};
  32.252 +static float iP071[3] = {1424.23, 0.00, -322.09};
  32.253 +static float iP072[3] = {-1368.01, 0.00, -310.38};
  32.254 +static float iP073[3] = {1255.57, 2.31, 114.05};
  32.255 +static float iP074[3] = {-1149.38, 0.00, 117.12};
  32.256 +static float iP075[3] = {718.36, 0.00, 433.36};
  32.257 +static float iP076[3] = {-655.90, 0.00, 433.36};
  32.258 +static float P068[3] = {-112.44, 9.25, -64.42};
  32.259 +static float P069[3] = {1155.63, 0.00, -182.46};
  32.260 +static float P070[3] = {-1143.13, 0.00, -181.54};
  32.261 +static float P071[3] = {1424.23, 0.00, -322.09};
  32.262 +static float P072[3] = {-1368.01, 0.00, -310.38};
  32.263 +static float P073[3] = {1255.57, 2.31, 114.05};
  32.264 +static float P074[3] = {-1149.38, 0.00, 117.12};
  32.265 +static float P075[3] = {718.36, 0.00, 433.36};
  32.266 +static float P076[3] = {-655.90, 0.00, 433.36};
  32.267 +static float P077[3] = {1058.00, -2.66, 7923.51};
  32.268 +static float P078[3] = {-1016.51, -15.47, 7902.87};
  32.269 +static float P079[3] = {-1363.99, -484.50, 7593.38};
  32.270 +static float P080[3] = {1478.09, -861.47, 7098.12};
  32.271 +static float P081[3] = {1338.06, -284.68, 7024.15};
  32.272 +static float P082[3] = {-1545.51, -860.64, 7106.60};
  32.273 +static float P083[3] = {1063.19, -70.46, 7466.60};
  32.274 +static float P084[3] = {-1369.18, -288.11, 7015.34};
  32.275 +static float P085[3] = {1348.44, -482.50, 7591.41};
  32.276 +static float P086[3] = {-1015.45, -96.80, 7474.86};
  32.277 +static float P087[3] = {731.04, 148.38, 7682.58};
  32.278 +static float P088[3] = {-697.03, 151.82, 7668.81};
  32.279 +static float P089[3] = {-686.82, 157.09, 7922.29};
  32.280 +static float P090[3] = {724.73, 147.75, 7931.39};
  32.281 +static float iP091[3] = {0.00, 327.10, 2346.55};
  32.282 +static float iP092[3] = {0.00, 552.28, 2311.31};
  32.283 +static float iP093[3] = {0.00, 721.16, 2166.41};
  32.284 +static float iP094[3] = {0.00, 693.42, 2388.80};
  32.285 +static float iP095[3] = {0.00, 389.44, 2859.97};
  32.286 +static float P091[3] = {0.00, 327.10, 2346.55};
  32.287 +static float P092[3] = {0.00, 552.28, 2311.31};
  32.288 +static float P093[3] = {0.00, 721.16, 2166.41};
  32.289 +static float P094[3] = {0.00, 693.42, 2388.80};
  32.290 +static float P095[3] = {0.00, 389.44, 2859.97};
  32.291 +static float iP096[3] = {222.02, -183.67, 10266.89};
  32.292 +static float iP097[3] = {-128.90, -182.70, 10266.89};
  32.293 +static float iP098[3] = {41.04, 88.31, 10659.36};
  32.294 +static float iP099[3] = {-48.73, 88.30, 10659.36};
  32.295 +static float P096[3] = {222.02, -183.67, 10266.89};
  32.296 +static float P097[3] = {-128.90, -182.70, 10266.89};
  32.297 +static float P098[3] = {41.04, 88.31, 10659.36};
  32.298 +static float P099[3] = {-48.73, 88.30, 10659.36};
  32.299 +static float P100[3] = {0.00, 603.42, 9340.68};
  32.300 +static float P104[3] = {-9.86, 567.62, 7858.65};
  32.301 +static float P105[3] = {31.96, 565.27, 7908.46};
  32.302 +static float P106[3] = {22.75, 568.13, 7782.83};
  32.303 +static float P107[3] = {58.93, 568.42, 7775.94};
  32.304 +static float P108[3] = {55.91, 565.59, 7905.86};
  32.305 +static float P109[3] = {99.21, 566.00, 7858.65};
  32.306 +static float P110[3] = {-498.83, 148.14, 9135.10};
  32.307 +static float P111[3] = {-495.46, 133.24, 9158.48};
  32.308 +static float P112[3] = {-490.82, 146.23, 9182.76};
  32.309 +static float P113[3] = {-489.55, 174.11, 9183.66};
  32.310 +static float P114[3] = {-492.92, 189.00, 9160.28};
  32.311 +static float P115[3] = {-497.56, 176.02, 9136.00};
  32.312 +static float P116[3] = {526.54, 169.68, 9137.70};
  32.313 +static float P117[3] = {523.49, 184.85, 9161.42};
  32.314 +static float P118[3] = {518.56, 171.78, 9186.06};
  32.315 +static float P119[3] = {516.68, 143.53, 9186.98};
  32.316 +static float P120[3] = {519.73, 128.36, 9163.26};
  32.317 +static float P121[3] = {524.66, 141.43, 9138.62};
  32.318 +/* *INDENT-ON* */
  32.319 +
  32.320 +void
  32.321 +Whale001(void)
  32.322 +{
  32.323 +
  32.324 +    glBegin(GL_POLYGON);
  32.325 +    glNormal3fv(N001);
  32.326 +    glVertex3fv(P001);
  32.327 +    glNormal3fv(N068);
  32.328 +    glVertex3fv(P068);
  32.329 +    glNormal3fv(N010);
  32.330 +    glVertex3fv(P010);
  32.331 +    glEnd();
  32.332 +    glBegin(GL_POLYGON);
  32.333 +    glNormal3fv(N068);
  32.334 +    glVertex3fv(P068);
  32.335 +    glNormal3fv(N076);
  32.336 +    glVertex3fv(P076);
  32.337 +    glNormal3fv(N010);
  32.338 +    glVertex3fv(P010);
  32.339 +    glEnd();
  32.340 +    glBegin(GL_POLYGON);
  32.341 +    glNormal3fv(N068);
  32.342 +    glVertex3fv(P068);
  32.343 +    glNormal3fv(N070);
  32.344 +    glVertex3fv(P070);
  32.345 +    glNormal3fv(N076);
  32.346 +    glVertex3fv(P076);
  32.347 +    glEnd();
  32.348 +    glBegin(GL_POLYGON);
  32.349 +    glNormal3fv(N076);
  32.350 +    glVertex3fv(P076);
  32.351 +    glNormal3fv(N070);
  32.352 +    glVertex3fv(P070);
  32.353 +    glNormal3fv(N074);
  32.354 +    glVertex3fv(P074);
  32.355 +    glEnd();
  32.356 +    glBegin(GL_POLYGON);
  32.357 +    glNormal3fv(N070);
  32.358 +    glVertex3fv(P070);
  32.359 +    glNormal3fv(N072);
  32.360 +    glVertex3fv(P072);
  32.361 +    glNormal3fv(N074);
  32.362 +    glVertex3fv(P074);
  32.363 +    glEnd();
  32.364 +    glBegin(GL_POLYGON);
  32.365 +    glNormal3fv(N072);
  32.366 +    glVertex3fv(P072);
  32.367 +    glNormal3fv(N070);
  32.368 +    glVertex3fv(P070);
  32.369 +    glNormal3fv(N074);
  32.370 +    glVertex3fv(P074);
  32.371 +    glEnd();
  32.372 +    glBegin(GL_POLYGON);
  32.373 +    glNormal3fv(N074);
  32.374 +    glVertex3fv(P074);
  32.375 +    glNormal3fv(N070);
  32.376 +    glVertex3fv(P070);
  32.377 +    glNormal3fv(N076);
  32.378 +    glVertex3fv(P076);
  32.379 +    glEnd();
  32.380 +    glBegin(GL_POLYGON);
  32.381 +    glNormal3fv(N070);
  32.382 +    glVertex3fv(P070);
  32.383 +    glNormal3fv(N068);
  32.384 +    glVertex3fv(P068);
  32.385 +    glNormal3fv(N076);
  32.386 +    glVertex3fv(P076);
  32.387 +    glEnd();
  32.388 +    glBegin(GL_POLYGON);
  32.389 +    glNormal3fv(N076);
  32.390 +    glVertex3fv(P076);
  32.391 +    glNormal3fv(N068);
  32.392 +    glVertex3fv(P068);
  32.393 +    glNormal3fv(N010);
  32.394 +    glVertex3fv(P010);
  32.395 +    glEnd();
  32.396 +    glBegin(GL_POLYGON);
  32.397 +    glNormal3fv(N068);
  32.398 +    glVertex3fv(P068);
  32.399 +    glNormal3fv(N001);
  32.400 +    glVertex3fv(P001);
  32.401 +    glNormal3fv(N010);
  32.402 +    glVertex3fv(P010);
  32.403 +    glEnd();
  32.404 +}
  32.405 +
  32.406 +void
  32.407 +Whale002(void)
  32.408 +{
  32.409 +    glBegin(GL_POLYGON);
  32.410 +    glNormal3fv(N011);
  32.411 +    glVertex3fv(P011);
  32.412 +    glNormal3fv(N001);
  32.413 +    glVertex3fv(P001);
  32.414 +    glNormal3fv(N009);
  32.415 +    glVertex3fv(P009);
  32.416 +    glEnd();
  32.417 +    glBegin(GL_POLYGON);
  32.418 +    glNormal3fv(N075);
  32.419 +    glVertex3fv(P075);
  32.420 +    glNormal3fv(N011);
  32.421 +    glVertex3fv(P011);
  32.422 +    glNormal3fv(N009);
  32.423 +    glVertex3fv(P009);
  32.424 +    glEnd();
  32.425 +    glBegin(GL_POLYGON);
  32.426 +    glNormal3fv(N069);
  32.427 +    glVertex3fv(P069);
  32.428 +    glNormal3fv(N011);
  32.429 +    glVertex3fv(P011);
  32.430 +    glNormal3fv(N075);
  32.431 +    glVertex3fv(P075);
  32.432 +    glEnd();
  32.433 +    glBegin(GL_POLYGON);
  32.434 +    glNormal3fv(N069);
  32.435 +    glVertex3fv(P069);
  32.436 +    glNormal3fv(N075);
  32.437 +    glVertex3fv(P075);
  32.438 +    glNormal3fv(N073);
  32.439 +    glVertex3fv(P073);
  32.440 +    glEnd();
  32.441 +    glBegin(GL_POLYGON);
  32.442 +    glNormal3fv(N071);
  32.443 +    glVertex3fv(P071);
  32.444 +    glNormal3fv(N069);
  32.445 +    glVertex3fv(P069);
  32.446 +    glNormal3fv(N073);
  32.447 +    glVertex3fv(P073);
  32.448 +    glEnd();
  32.449 +    glBegin(GL_POLYGON);
  32.450 +    glNormal3fv(N001);
  32.451 +    glVertex3fv(P001);
  32.452 +    glNormal3fv(N011);
  32.453 +    glVertex3fv(P011);
  32.454 +    glNormal3fv(N009);
  32.455 +    glVertex3fv(P009);
  32.456 +    glEnd();
  32.457 +    glBegin(GL_POLYGON);
  32.458 +    glNormal3fv(N009);
  32.459 +    glVertex3fv(P009);
  32.460 +    glNormal3fv(N011);
  32.461 +    glVertex3fv(P011);
  32.462 +    glNormal3fv(N075);
  32.463 +    glVertex3fv(P075);
  32.464 +    glEnd();
  32.465 +    glBegin(GL_POLYGON);
  32.466 +    glNormal3fv(N011);
  32.467 +    glVertex3fv(P011);
  32.468 +    glNormal3fv(N069);
  32.469 +    glVertex3fv(P069);
  32.470 +    glNormal3fv(N075);
  32.471 +    glVertex3fv(P075);
  32.472 +    glEnd();
  32.473 +    glBegin(GL_POLYGON);
  32.474 +    glNormal3fv(N069);
  32.475 +    glVertex3fv(P069);
  32.476 +    glNormal3fv(N073);
  32.477 +    glVertex3fv(P073);
  32.478 +    glNormal3fv(N075);
  32.479 +    glVertex3fv(P075);
  32.480 +    glEnd();
  32.481 +    glBegin(GL_POLYGON);
  32.482 +    glNormal3fv(N069);
  32.483 +    glVertex3fv(P069);
  32.484 +    glNormal3fv(N071);
  32.485 +    glVertex3fv(P071);
  32.486 +    glNormal3fv(N073);
  32.487 +    glVertex3fv(P073);
  32.488 +    glEnd();
  32.489 +}
  32.490 +
  32.491 +void
  32.492 +Whale003(void)
  32.493 +{
  32.494 +    glBegin(GL_POLYGON);
  32.495 +    glNormal3fv(N018);
  32.496 +    glVertex3fv(P018);
  32.497 +    glNormal3fv(N001);
  32.498 +    glVertex3fv(P001);
  32.499 +    glNormal3fv(N019);
  32.500 +    glVertex3fv(P019);
  32.501 +    glEnd();
  32.502 +    glBegin(GL_POLYGON);
  32.503 +    glNormal3fv(N019);
  32.504 +    glVertex3fv(P019);
  32.505 +    glNormal3fv(N001);
  32.506 +    glVertex3fv(P001);
  32.507 +    glNormal3fv(N012);
  32.508 +    glVertex3fv(P012);
  32.509 +    glEnd();
  32.510 +    glBegin(GL_POLYGON);
  32.511 +    glNormal3fv(N017);
  32.512 +    glVertex3fv(P017);
  32.513 +    glNormal3fv(N001);
  32.514 +    glVertex3fv(P001);
  32.515 +    glNormal3fv(N018);
  32.516 +    glVertex3fv(P018);
  32.517 +    glEnd();
  32.518 +    glBegin(GL_POLYGON);
  32.519 +    glNormal3fv(N001);
  32.520 +    glVertex3fv(P001);
  32.521 +    glNormal3fv(N017);
  32.522 +    glVertex3fv(P017);
  32.523 +    glNormal3fv(N016);
  32.524 +    glVertex3fv(P016);
  32.525 +    glEnd();
  32.526 +    glBegin(GL_POLYGON);
  32.527 +    glNormal3fv(N001);
  32.528 +    glVertex3fv(P001);
  32.529 +    glNormal3fv(N013);
  32.530 +    glVertex3fv(P013);
  32.531 +    glNormal3fv(N012);
  32.532 +    glVertex3fv(P012);
  32.533 +    glEnd();
  32.534 +    glBegin(GL_POLYGON);
  32.535 +    glNormal3fv(N001);
  32.536 +    glVertex3fv(P001);
  32.537 +    glNormal3fv(N016);
  32.538 +    glVertex3fv(P016);
  32.539 +    glNormal3fv(N015);
  32.540 +    glVertex3fv(P015);
  32.541 +    glEnd();
  32.542 +    glBegin(GL_POLYGON);
  32.543 +    glNormal3fv(N001);
  32.544 +    glVertex3fv(P001);
  32.545 +    glNormal3fv(N014);
  32.546 +    glVertex3fv(P014);
  32.547 +    glNormal3fv(N013);
  32.548 +    glVertex3fv(P013);
  32.549 +    glEnd();
  32.550 +    glBegin(GL_POLYGON);
  32.551 +    glNormal3fv(N001);
  32.552 +    glVertex3fv(P001);
  32.553 +    glNormal3fv(N015);
  32.554 +    glVertex3fv(P015);
  32.555 +    glNormal3fv(N014);
  32.556 +    glVertex3fv(P014);
  32.557 +    glEnd();
  32.558 +}
  32.559 +
  32.560 +void
  32.561 +Whale004(void)
  32.562 +{
  32.563 +    glBegin(GL_POLYGON);
  32.564 +    glNormal3fv(N014);
  32.565 +    glVertex3fv(P014);
  32.566 +    glNormal3fv(N015);
  32.567 +    glVertex3fv(P015);
  32.568 +    glNormal3fv(N023);
  32.569 +    glVertex3fv(P023);
  32.570 +    glNormal3fv(N022);
  32.571 +    glVertex3fv(P022);
  32.572 +    glEnd();
  32.573 +    glBegin(GL_POLYGON);
  32.574 +    glNormal3fv(N015);
  32.575 +    glVertex3fv(P015);
  32.576 +    glNormal3fv(N016);
  32.577 +    glVertex3fv(P016);
  32.578 +    glNormal3fv(N024);
  32.579 +    glVertex3fv(P024);
  32.580 +    glNormal3fv(N023);
  32.581 +    glVertex3fv(P023);
  32.582 +    glEnd();
  32.583 +    glBegin(GL_POLYGON);
  32.584 +    glNormal3fv(N016);
  32.585 +    glVertex3fv(P016);
  32.586 +    glNormal3fv(N017);
  32.587 +    glVertex3fv(P017);
  32.588 +    glNormal3fv(N025);
  32.589 +    glVertex3fv(P025);
  32.590 +    glNormal3fv(N024);
  32.591 +    glVertex3fv(P024);
  32.592 +    glEnd();
  32.593 +    glBegin(GL_POLYGON);
  32.594 +    glNormal3fv(N017);
  32.595 +    glVertex3fv(P017);
  32.596 +    glNormal3fv(N018);
  32.597 +    glVertex3fv(P018);
  32.598 +    glNormal3fv(N026);
  32.599 +    glVertex3fv(P026);
  32.600 +    glNormal3fv(N025);
  32.601 +    glVertex3fv(P025);
  32.602 +    glEnd();
  32.603 +    glBegin(GL_POLYGON);
  32.604 +    glNormal3fv(N013);
  32.605 +    glVertex3fv(P013);
  32.606 +    glNormal3fv(N014);
  32.607 +    glVertex3fv(P014);
  32.608 +    glNormal3fv(N022);
  32.609 +    glVertex3fv(P022);
  32.610 +    glNormal3fv(N021);
  32.611 +    glVertex3fv(P021);
  32.612 +    glEnd();
  32.613 +    glBegin(GL_POLYGON);
  32.614 +    glNormal3fv(N012);
  32.615 +    glVertex3fv(P012);
  32.616 +    glNormal3fv(N013);
  32.617 +    glVertex3fv(P013);
  32.618 +    glNormal3fv(N021);
  32.619 +    glVertex3fv(P021);
  32.620 +    glNormal3fv(N020);
  32.621 +    glVertex3fv(P020);
  32.622 +    glEnd();
  32.623 +    glBegin(GL_POLYGON);
  32.624 +    glNormal3fv(N018);
  32.625 +    glVertex3fv(P018);
  32.626 +    glNormal3fv(N019);
  32.627 +    glVertex3fv(P019);
  32.628 +    glNormal3fv(N027);
  32.629 +    glVertex3fv(P027);
  32.630 +    glNormal3fv(N026);
  32.631 +    glVertex3fv(P026);
  32.632 +    glEnd();
  32.633 +    glBegin(GL_POLYGON);
  32.634 +    glNormal3fv(N019);
  32.635 +    glVertex3fv(P019);
  32.636 +    glNormal3fv(N012);
  32.637 +    glVertex3fv(P012);
  32.638 +    glNormal3fv(N020);
  32.639 +    glVertex3fv(P020);
  32.640 +    glNormal3fv(N027);
  32.641 +    glVertex3fv(P027);
  32.642 +    glEnd();
  32.643 +}
  32.644 +
  32.645 +void
  32.646 +Whale005(void)
  32.647 +{
  32.648 +    glBegin(GL_POLYGON);
  32.649 +    glNormal3fv(N022);
  32.650 +    glVertex3fv(P022);
  32.651 +    glNormal3fv(N023);
  32.652 +    glVertex3fv(P023);
  32.653 +    glNormal3fv(N031);
  32.654 +    glVertex3fv(P031);
  32.655 +    glNormal3fv(N030);
  32.656 +    glVertex3fv(P030);
  32.657 +    glEnd();
  32.658 +    glBegin(GL_POLYGON);
  32.659 +    glNormal3fv(N021);
  32.660 +    glVertex3fv(P021);
  32.661 +    glNormal3fv(N022);
  32.662 +    glVertex3fv(P022);
  32.663 +    glNormal3fv(N030);
  32.664 +    glVertex3fv(P030);
  32.665 +    glEnd();
  32.666 +    glBegin(GL_POLYGON);
  32.667 +    glNormal3fv(N021);
  32.668 +    glVertex3fv(P021);
  32.669 +    glNormal3fv(N030);
  32.670 +    glVertex3fv(P030);
  32.671 +    glNormal3fv(N029);
  32.672 +    glVertex3fv(P029);
  32.673 +    glEnd();
  32.674 +    glBegin(GL_POLYGON);
  32.675 +    glNormal3fv(N023);
  32.676 +    glVertex3fv(P023);
  32.677 +    glNormal3fv(N024);
  32.678 +    glVertex3fv(P024);
  32.679 +    glNormal3fv(N031);
  32.680 +    glVertex3fv(P031);
  32.681 +    glEnd();
  32.682 +    glBegin(GL_POLYGON);
  32.683 +    glNormal3fv(N024);
  32.684 +    glVertex3fv(P024);
  32.685 +    glNormal3fv(N032);
  32.686 +    glVertex3fv(P032);
  32.687 +    glNormal3fv(N031);
  32.688 +    glVertex3fv(P031);
  32.689 +    glEnd();
  32.690 +    glBegin(GL_POLYGON);
  32.691 +    glNormal3fv(N024);
  32.692 +    glVertex3fv(P024);
  32.693 +    glNormal3fv(N025);
  32.694 +    glVertex3fv(P025);
  32.695 +    glNormal3fv(N032);
  32.696 +    glVertex3fv(P032);
  32.697 +    glEnd();
  32.698 +    glBegin(GL_POLYGON);
  32.699 +    glNormal3fv(N025);
  32.700 +    glVertex3fv(P025);
  32.701 +    glNormal3fv(N033);
  32.702 +    glVertex3fv(P033);
  32.703 +    glNormal3fv(N032);
  32.704 +    glVertex3fv(P032);
  32.705 +    glEnd();
  32.706 +    glBegin(GL_POLYGON);
  32.707 +    glNormal3fv(N020);
  32.708 +    glVertex3fv(P020);
  32.709 +    glNormal3fv(N021);
  32.710 +    glVertex3fv(P021);
  32.711 +    glNormal3fv(N029);
  32.712 +    glVertex3fv(P029);
  32.713 +    glEnd();
  32.714 +    glBegin(GL_POLYGON);
  32.715 +    glNormal3fv(N020);
  32.716 +    glVertex3fv(P020);
  32.717 +    glNormal3fv(N029);
  32.718 +    glVertex3fv(P029);
  32.719 +    glNormal3fv(N028);
  32.720 +    glVertex3fv(P028);
  32.721 +    glEnd();
  32.722 +    glBegin(GL_POLYGON);
  32.723 +    glNormal3fv(N027);
  32.724 +    glVertex3fv(P027);
  32.725 +    glNormal3fv(N020);
  32.726 +    glVertex3fv(P020);
  32.727 +    glNormal3fv(N028);
  32.728 +    glVertex3fv(P028);
  32.729 +    glEnd();
  32.730 +    glBegin(GL_POLYGON);
  32.731 +    glNormal3fv(N027);
  32.732 +    glVertex3fv(P027);
  32.733 +    glNormal3fv(N028);
  32.734 +    glVertex3fv(P028);
  32.735 +    glNormal3fv(N035);
  32.736 +    glVertex3fv(P035);
  32.737 +    glEnd();
  32.738 +    glBegin(GL_POLYGON);
  32.739 +    glNormal3fv(N025);
  32.740 +    glVertex3fv(P025);
  32.741 +    glNormal3fv(N026);
  32.742 +    glVertex3fv(P026);
  32.743 +    glNormal3fv(N033);
  32.744 +    glVertex3fv(P033);
  32.745 +    glEnd();
  32.746 +    glBegin(GL_POLYGON);
  32.747 +    glNormal3fv(N033);
  32.748 +    glVertex3fv(P033);
  32.749 +    glNormal3fv(N026);
  32.750 +    glVertex3fv(P026);
  32.751 +    glNormal3fv(N034);
  32.752 +    glVertex3fv(P034);
  32.753 +    glEnd();
  32.754 +    glBegin(GL_POLYGON);
  32.755 +    glNormal3fv(N026);
  32.756 +    glVertex3fv(P026);
  32.757 +    glNormal3fv(N027);
  32.758 +    glVertex3fv(P027);
  32.759 +    glNormal3fv(N035);
  32.760 +    glVertex3fv(P035);
  32.761 +    glNormal3fv(N034);
  32.762 +    glVertex3fv(P034);
  32.763 +    glEnd();
  32.764 +}
  32.765 +
  32.766 +void
  32.767 +Whale006(void)
  32.768 +{
  32.769 +    glBegin(GL_POLYGON);
  32.770 +    glNormal3fv(N092);
  32.771 +    glVertex3fv(P092);
  32.772 +    glNormal3fv(N093);
  32.773 +    glVertex3fv(P093);
  32.774 +    glNormal3fv(N094);
  32.775 +    glVertex3fv(P094);
  32.776 +    glEnd();
  32.777 +    glBegin(GL_POLYGON);
  32.778 +    glNormal3fv(N093);
  32.779 +    glVertex3fv(P093);
  32.780 +    glNormal3fv(N092);
  32.781 +    glVertex3fv(P092);
  32.782 +    glNormal3fv(N094);
  32.783 +    glVertex3fv(P094);
  32.784 +    glEnd();
  32.785 +    glBegin(GL_POLYGON);
  32.786 +    glNormal3fv(N092);
  32.787 +    glVertex3fv(P092);
  32.788 +    glNormal3fv(N091);
  32.789 +    glVertex3fv(P091);
  32.790 +    glNormal3fv(N095);
  32.791 +    glVertex3fv(P095);
  32.792 +    glNormal3fv(N094);
  32.793 +    glVertex3fv(P094);
  32.794 +    glEnd();
  32.795 +    glBegin(GL_POLYGON);
  32.796 +    glNormal3fv(N091);
  32.797 +    glVertex3fv(P091);
  32.798 +    glNormal3fv(N092);
  32.799 +    glVertex3fv(P092);
  32.800 +    glNormal3fv(N094);
  32.801 +    glVertex3fv(P094);
  32.802 +    glNormal3fv(N095);
  32.803 +    glVertex3fv(P095);
  32.804 +    glEnd();
  32.805 +}
  32.806 +
  32.807 +void
  32.808 +Whale007(void)
  32.809 +{
  32.810 +    glBegin(GL_POLYGON);
  32.811 +    glNormal3fv(N030);
  32.812 +    glVertex3fv(P030);
  32.813 +    glNormal3fv(N031);
  32.814 +    glVertex3fv(P031);
  32.815 +    glNormal3fv(N039);
  32.816 +    glVertex3fv(P039);
  32.817 +    glNormal3fv(N038);
  32.818 +    glVertex3fv(P038);
  32.819 +    glEnd();
  32.820 +    glBegin(GL_POLYGON);
  32.821 +    glNormal3fv(N029);
  32.822 +    glVertex3fv(P029);
  32.823 +    glNormal3fv(N030);
  32.824 +    glVertex3fv(P030);
  32.825 +    glNormal3fv(N038);
  32.826 +    glVertex3fv(P038);
  32.827 +    glEnd();
  32.828 +    glBegin(GL_POLYGON);
  32.829 +    glNormal3fv(N029);
  32.830 +    glVertex3fv(P029);
  32.831 +    glNormal3fv(N038);
  32.832 +    glVertex3fv(P038);
  32.833 +    glNormal3fv(N037);
  32.834 +    glVertex3fv(P037);
  32.835 +    glEnd();
  32.836 +    glBegin(GL_POLYGON);
  32.837 +    glNormal3fv(N028);
  32.838 +    glVertex3fv(P028);
  32.839 +    glNormal3fv(N029);
  32.840 +    glVertex3fv(P029);
  32.841 +    glNormal3fv(N037);
  32.842 +    glVertex3fv(P037);
  32.843 +    glEnd();
  32.844 +    glBegin(GL_POLYGON);
  32.845 +    glNormal3fv(N028);
  32.846 +    glVertex3fv(P028);
  32.847 +    glNormal3fv(N037);
  32.848 +    glVertex3fv(P037);
  32.849 +    glNormal3fv(N036);
  32.850 +    glVertex3fv(P036);
  32.851 +    glEnd();
  32.852 +    glBegin(GL_POLYGON);
  32.853 +    glNormal3fv(N035);
  32.854 +    glVertex3fv(P035);
  32.855 +    glNormal3fv(N028);
  32.856 +    glVertex3fv(P028);
  32.857 +    glNormal3fv(N036);
  32.858 +    glVertex3fv(P036);
  32.859 +    glEnd();
  32.860 +    glBegin(GL_POLYGON);
  32.861 +    glNormal3fv(N035);
  32.862 +    glVertex3fv(P035);
  32.863 +    glNormal3fv(N036);
  32.864 +    glVertex3fv(P036);
  32.865 +    glNormal3fv(N043);
  32.866 +    glVertex3fv(P043);
  32.867 +    glEnd();
  32.868 +    glBegin(GL_POLYGON);
  32.869 +    glNormal3fv(N034);
  32.870 +    glVertex3fv(P034);
  32.871 +    glNormal3fv(N035);
  32.872 +    glVertex3fv(P035);
  32.873 +    glNormal3fv(N043);
  32.874 +    glVertex3fv(P043);
  32.875 +    glNormal3fv(N042);
  32.876 +    glVertex3fv(P042);
  32.877 +    glEnd();
  32.878 +    glBegin(GL_POLYGON);
  32.879 +    glNormal3fv(N033);
  32.880 +    glVertex3fv(P033);
  32.881 +    glNormal3fv(N034);
  32.882 +    glVertex3fv(P034);
  32.883 +    glNormal3fv(N042);
  32.884 +    glVertex3fv(P042);
  32.885 +    glEnd();
  32.886 +    glBegin(GL_POLYGON);
  32.887 +    glNormal3fv(N033);
  32.888 +    glVertex3fv(P033);
  32.889 +    glNormal3fv(N042);
  32.890 +    glVertex3fv(P042);
  32.891 +    glNormal3fv(N041);
  32.892 +    glVertex3fv(P041);
  32.893 +    glEnd();
  32.894 +    glBegin(GL_POLYGON);
  32.895 +    glNormal3fv(N031);
  32.896 +    glVertex3fv(P031);
  32.897 +    glNormal3fv(N032);
  32.898 +    glVertex3fv(P032);
  32.899 +    glNormal3fv(N039);
  32.900 +    glVertex3fv(P039);
  32.901 +    glEnd();
  32.902 +    glBegin(GL_POLYGON);
  32.903 +    glNormal3fv(N039);
  32.904 +    glVertex3fv(P039);
  32.905 +    glNormal3fv(N032);
  32.906 +    glVertex3fv(P032);
  32.907 +    glNormal3fv(N040);
  32.908 +    glVertex3fv(P040);
  32.909 +    glEnd();
  32.910 +    glBegin(GL_POLYGON);
  32.911 +    glNormal3fv(N032);
  32.912 +    glVertex3fv(P032);
  32.913 +    glNormal3fv(N033);
  32.914 +    glVertex3fv(P033);
  32.915 +    glNormal3fv(N040);
  32.916 +    glVertex3fv(P040);
  32.917 +    glEnd();
  32.918 +    glBegin(GL_POLYGON);
  32.919 +    glNormal3fv(N040);
  32.920 +    glVertex3fv(P040);
  32.921 +    glNormal3fv(N033);
  32.922 +    glVertex3fv(P033);
  32.923 +    glNormal3fv(N041);
  32.924 +    glVertex3fv(P041);
  32.925 +    glEnd();
  32.926 +}
  32.927 +
  32.928 +void
  32.929 +Whale008(void)
  32.930 +{
  32.931 +    glBegin(GL_POLYGON);
  32.932 +    glNormal3fv(N042);
  32.933 +    glVertex3fv(P042);
  32.934 +    glNormal3fv(N043);
  32.935 +    glVertex3fv(P043);
  32.936 +    glNormal3fv(N051);
  32.937 +    glVertex3fv(P051);
  32.938 +    glNormal3fv(N050);
  32.939 +    glVertex3fv(P050);
  32.940 +    glEnd();
  32.941 +    glBegin(GL_POLYGON);
  32.942 +    glNormal3fv(N043);
  32.943 +    glVertex3fv(P043);
  32.944 +    glNormal3fv(N036);
  32.945 +    glVertex3fv(P036);
  32.946 +    glNormal3fv(N051);
  32.947 +    glVertex3fv(P051);
  32.948 +    glEnd();
  32.949 +    glBegin(GL_POLYGON);
  32.950 +    glNormal3fv(N051);
  32.951 +    glVertex3fv(P051);
  32.952 +    glNormal3fv(N036);
  32.953 +    glVertex3fv(P036);
  32.954 +    glNormal3fv(N044);
  32.955 +    glVertex3fv(P044);
  32.956 +    glEnd();
  32.957 +    glBegin(GL_POLYGON);
  32.958 +    glNormal3fv(N041);
  32.959 +    glVertex3fv(P041);
  32.960 +    glNormal3fv(N042);
  32.961 +    glVertex3fv(P042);
  32.962 +    glNormal3fv(N050);
  32.963 +    glVertex3fv(P050);
  32.964 +    glEnd();
  32.965 +    glBegin(GL_POLYGON);
  32.966 +    glNormal3fv(N041);
  32.967 +    glVertex3fv(P041);
  32.968 +    glNormal3fv(N050);
  32.969 +    glVertex3fv(P050);
  32.970 +    glNormal3fv(N049);
  32.971 +    glVertex3fv(P049);
  32.972 +    glEnd();
  32.973 +    glBegin(GL_POLYGON);
  32.974 +    glNormal3fv(N036);
  32.975 +    glVertex3fv(P036);
  32.976 +    glNormal3fv(N037);
  32.977 +    glVertex3fv(P037);
  32.978 +    glNormal3fv(N044);
  32.979 +    glVertex3fv(P044);
  32.980 +    glEnd();
  32.981 +    glBegin(GL_POLYGON);
  32.982 +    glNormal3fv(N044);
  32.983 +    glVertex3fv(P044);
  32.984 +    glNormal3fv(N037);
  32.985 +    glVertex3fv(P037);
  32.986 +    glNormal3fv(N045);
  32.987 +    glVertex3fv(P045);
  32.988 +    glEnd();
  32.989 +    glBegin(GL_POLYGON);
  32.990 +    glNormal3fv(N040);
  32.991 +    glVertex3fv(P040);
  32.992 +    glNormal3fv(N041);
  32.993 +    glVertex3fv(P041);
  32.994 +    glNormal3fv(N049);
  32.995 +    glVertex3fv(P049);
  32.996 +    glEnd();
  32.997 +    glBegin(GL_POLYGON);
  32.998 +    glNormal3fv(N040);
  32.999 +    glVertex3fv(P040);
 32.1000 +    glNormal3fv(N049);
 32.1001 +    glVertex3fv(P049);
 32.1002 +    glNormal3fv(N048);
 32.1003 +    glVertex3fv(P048);
 32.1004 +    glEnd();
 32.1005 +    glBegin(GL_POLYGON);
 32.1006 +    glNormal3fv(N039);
 32.1007 +    glVertex3fv(P039);
 32.1008 +    glNormal3fv(N040);
 32.1009 +    glVertex3fv(P040);
 32.1010 +    glNormal3fv(N048);
 32.1011 +    glVertex3fv(P048);
 32.1012 +    glEnd();
 32.1013 +    glBegin(GL_POLYGON);
 32.1014 +    glNormal3fv(N039);
 32.1015 +    glVertex3fv(P039);
 32.1016 +    glNormal3fv(N048);
 32.1017 +    glVertex3fv(P048);
 32.1018 +    glNormal3fv(N047);
 32.1019 +    glVertex3fv(P047);
 32.1020 +    glEnd();
 32.1021 +    glBegin(GL_POLYGON);
 32.1022 +    glNormal3fv(N037);
 32.1023 +    glVertex3fv(P037);
 32.1024 +    glNormal3fv(N038);
 32.1025 +    glVertex3fv(P038);
 32.1026 +    glNormal3fv(N045);
 32.1027 +    glVertex3fv(P045);
 32.1028 +    glEnd();
 32.1029 +    glBegin(GL_POLYGON);
 32.1030 +    glNormal3fv(N038);
 32.1031 +    glVertex3fv(P038);
 32.1032 +    glNormal3fv(N046);
 32.1033 +    glVertex3fv(P046);
 32.1034 +    glNormal3fv(N045);
 32.1035 +    glVertex3fv(P045);
 32.1036 +    glEnd();
 32.1037 +    glBegin(GL_POLYGON);
 32.1038 +    glNormal3fv(N038);
 32.1039 +    glVertex3fv(P038);
 32.1040 +    glNormal3fv(N039);
 32.1041 +    glVertex3fv(P039);
 32.1042 +    glNormal3fv(N047);
 32.1043 +    glVertex3fv(P047);
 32.1044 +    glNormal3fv(N046);
 32.1045 +    glVertex3fv(P046);
 32.1046 +    glEnd();
 32.1047 +}
 32.1048 +
 32.1049 +void
 32.1050 +Whale009(void)
 32.1051 +{
 32.1052 +    glBegin(GL_POLYGON);
 32.1053 +    glNormal3fv(N050);
 32.1054 +    glVertex3fv(P050);
 32.1055 +    glNormal3fv(N051);
 32.1056 +    glVertex3fv(P051);
 32.1057 +    glNormal3fv(N059);
 32.1058 +    glVertex3fv(P059);
 32.1059 +    glNormal3fv(N058);
 32.1060 +    glVertex3fv(P058);
 32.1061 +    glEnd();
 32.1062 +    glBegin(GL_POLYGON);
 32.1063 +    glNormal3fv(N051);
 32.1064 +    glVertex3fv(P051);
 32.1065 +    glNormal3fv(N044);
 32.1066 +    glVertex3fv(P044);
 32.1067 +    glNormal3fv(N059);
 32.1068 +    glVertex3fv(P059);
 32.1069 +    glEnd();
 32.1070 +    glBegin(GL_POLYGON);
 32.1071 +    glNormal3fv(N059);
 32.1072 +    glVertex3fv(P059);
 32.1073 +    glNormal3fv(N044);
 32.1074 +    glVertex3fv(P044);
 32.1075 +    glNormal3fv(N052);
 32.1076 +    glVertex3fv(P052);
 32.1077 +    glEnd();
 32.1078 +    glBegin(GL_POLYGON);
 32.1079 +    glNormal3fv(N044);
 32.1080 +    glVertex3fv(P044);
 32.1081 +    glNormal3fv(N045);
 32.1082 +    glVertex3fv(P045);
 32.1083 +    glNormal3fv(N053);
 32.1084 +    glVertex3fv(P053);
 32.1085 +    glEnd();
 32.1086 +    glBegin(GL_POLYGON);
 32.1087 +    glNormal3fv(N044);
 32.1088 +    glVertex3fv(P044);
 32.1089 +    glNormal3fv(N053);
 32.1090 +    glVertex3fv(P053);
 32.1091 +    glNormal3fv(N052);
 32.1092 +    glVertex3fv(P052);
 32.1093 +    glEnd();
 32.1094 +    glBegin(GL_POLYGON);
 32.1095 +    glNormal3fv(N049);
 32.1096 +    glVertex3fv(P049);
 32.1097 +    glNormal3fv(N050);
 32.1098 +    glVertex3fv(P050);
 32.1099 +    glNormal3fv(N058);
 32.1100 +    glVertex3fv(P058);
 32.1101 +    glEnd();
 32.1102 +    glBegin(GL_POLYGON);
 32.1103 +    glNormal3fv(N049);
 32.1104 +    glVertex3fv(P049);
 32.1105 +    glNormal3fv(N058);
 32.1106 +    glVertex3fv(P058);
 32.1107 +    glNormal3fv(N057);
 32.1108 +    glVertex3fv(P057);
 32.1109 +    glEnd();
 32.1110 +    glBegin(GL_POLYGON);
 32.1111 +    glNormal3fv(N048);
 32.1112 +    glVertex3fv(P048);
 32.1113 +    glNormal3fv(N049);
 32.1114 +    glVertex3fv(P049);
 32.1115 +    glNormal3fv(N057);
 32.1116 +    glVertex3fv(P057);
 32.1117 +    glEnd();
 32.1118 +    glBegin(GL_POLYGON);
 32.1119 +    glNormal3fv(N048);
 32.1120 +    glVertex3fv(P048);
 32.1121 +    glNormal3fv(N057);
 32.1122 +    glVertex3fv(P057);
 32.1123 +    glNormal3fv(N056);
 32.1124 +    glVertex3fv(P056);
 32.1125 +    glEnd();
 32.1126 +    glBegin(GL_POLYGON);
 32.1127 +    glNormal3fv(N047);
 32.1128 +    glVertex3fv(P047);
 32.1129 +    glNormal3fv(N048);
 32.1130 +    glVertex3fv(P048);
 32.1131 +    glNormal3fv(N056);
 32.1132 +    glVertex3fv(P056);
 32.1133 +    glEnd();
 32.1134 +    glBegin(GL_POLYGON);
 32.1135 +    glNormal3fv(N047);
 32.1136 +    glVertex3fv(P047);
 32.1137 +    glNormal3fv(N056);
 32.1138 +    glVertex3fv(P056);
 32.1139 +    glNormal3fv(N055);
 32.1140 +    glVertex3fv(P055);
 32.1141 +    glEnd();
 32.1142 +    glBegin(GL_POLYGON);
 32.1143 +    glNormal3fv(N045);
 32.1144 +    glVertex3fv(P045);
 32.1145 +    glNormal3fv(N046);
 32.1146 +    glVertex3fv(P046);
 32.1147 +    glNormal3fv(N053);
 32.1148 +    glVertex3fv(P053);
 32.1149 +    glEnd();
 32.1150 +    glBegin(GL_POLYGON);
 32.1151 +    glNormal3fv(N046);
 32.1152 +    glVertex3fv(P046);
 32.1153 +    glNormal3fv(N054);
 32.1154 +    glVertex3fv(P054);
 32.1155 +    glNormal3fv(N053);
 32.1156 +    glVertex3fv(P053);
 32.1157 +    glEnd();
 32.1158 +    glBegin(GL_POLYGON);
 32.1159 +    glNormal3fv(N046);
 32.1160 +    glVertex3fv(P046);
 32.1161 +    glNormal3fv(N047);
 32.1162 +    glVertex3fv(P047);
 32.1163 +    glNormal3fv(N055);
 32.1164 +    glVertex3fv(P055);
 32.1165 +    glNormal3fv(N054);
 32.1166 +    glVertex3fv(P054);
 32.1167 +    glEnd();
 32.1168 +}
 32.1169 +
 32.1170 +void
 32.1171 +Whale010(void)
 32.1172 +{
 32.1173 +    glBegin(GL_POLYGON);
 32.1174 +    glNormal3fv(N080);
 32.1175 +    glVertex3fv(P080);
 32.1176 +    glNormal3fv(N081);
 32.1177 +    glVertex3fv(P081);
 32.1178 +    glNormal3fv(N085);
 32.1179 +    glVertex3fv(P085);
 32.1180 +    glEnd();
 32.1181 +    glBegin(GL_POLYGON);
 32.1182 +    glNormal3fv(N081);
 32.1183 +    glVertex3fv(P081);
 32.1184 +    glNormal3fv(N083);
 32.1185 +    glVertex3fv(P083);
 32.1186 +    glNormal3fv(N085);
 32.1187 +    glVertex3fv(P085);
 32.1188 +    glEnd();
 32.1189 +    glBegin(GL_POLYGON);
 32.1190 +    glNormal3fv(N085);
 32.1191 +    glVertex3fv(P085);
 32.1192 +    glNormal3fv(N083);
 32.1193 +    glVertex3fv(P083);
 32.1194 +    glNormal3fv(N077);
 32.1195 +    glVertex3fv(P077);
 32.1196 +    glEnd();
 32.1197 +    glBegin(GL_POLYGON);
 32.1198 +    glNormal3fv(N083);
 32.1199 +    glVertex3fv(P083);
 32.1200 +    glNormal3fv(N087);
 32.1201 +    glVertex3fv(P087);
 32.1202 +    glNormal3fv(N077);
 32.1203 +    glVertex3fv(P077);
 32.1204 +    glEnd();
 32.1205 +    glBegin(GL_POLYGON);
 32.1206 +    glNormal3fv(N077);
 32.1207 +    glVertex3fv(P077);
 32.1208 +    glNormal3fv(N087);
 32.1209 +    glVertex3fv(P087);
 32.1210 +    glNormal3fv(N090);
 32.1211 +    glVertex3fv(P090);
 32.1212 +    glEnd();
 32.1213 +    glBegin(GL_POLYGON);
 32.1214 +    glNormal3fv(N081);
 32.1215 +    glVertex3fv(P081);
 32.1216 +    glNormal3fv(N080);
 32.1217 +    glVertex3fv(P080);
 32.1218 +    glNormal3fv(N085);
 32.1219 +    glVertex3fv(P085);
 32.1220 +    glEnd();
 32.1221 +    glBegin(GL_POLYGON);
 32.1222 +    glNormal3fv(N083);
 32.1223 +    glVertex3fv(P083);
 32.1224 +    glNormal3fv(N081);
 32.1225 +    glVertex3fv(P081);
 32.1226 +    glNormal3fv(N085);
 32.1227 +    glVertex3fv(P085);
 32.1228 +    glEnd();
 32.1229 +    glBegin(GL_POLYGON);
 32.1230 +    glNormal3fv(N083);
 32.1231 +    glVertex3fv(P083);
 32.1232 +    glNormal3fv(N085);
 32.1233 +    glVertex3fv(P085);
 32.1234 +    glNormal3fv(N077);
 32.1235 +    glVertex3fv(P077);
 32.1236 +    glEnd();
 32.1237 +    glBegin(GL_POLYGON);
 32.1238 +    glNormal3fv(N087);
 32.1239 +    glVertex3fv(P087);
 32.1240 +    glNormal3fv(N083);
 32.1241 +    glVertex3fv(P083);
 32.1242 +    glNormal3fv(N077);
 32.1243 +    glVertex3fv(P077);
 32.1244 +    glEnd();
 32.1245 +    glBegin(GL_POLYGON);
 32.1246 +    glNormal3fv(N087);
 32.1247 +    glVertex3fv(P087);
 32.1248 +    glNormal3fv(N077);
 32.1249 +    glVertex3fv(P077);
 32.1250 +    glNormal3fv(N090);
 32.1251 +    glVertex3fv(P090);
 32.1252 +    glEnd();
 32.1253 +}
 32.1254 +
 32.1255 +void
 32.1256 +Whale011(void)
 32.1257 +{
 32.1258 +    glBegin(GL_POLYGON);
 32.1259 +    glNormal3fv(N082);
 32.1260 +    glVertex3fv(P082);
 32.1261 +    glNormal3fv(N084);
 32.1262 +    glVertex3fv(P084);
 32.1263 +    glNormal3fv(N079);
 32.1264 +    glVertex3fv(P079);
 32.1265 +    glEnd();
 32.1266 +    glBegin(GL_POLYGON);
 32.1267 +    glNormal3fv(N084);
 32.1268 +    glVertex3fv(P084);
 32.1269 +    glNormal3fv(N086);
 32.1270 +    glVertex3fv(P086);
 32.1271 +    glNormal3fv(N079);
 32.1272 +    glVertex3fv(P079);
 32.1273 +    glEnd();
 32.1274 +    glBegin(GL_POLYGON);
 32.1275 +    glNormal3fv(N079);
 32.1276 +    glVertex3fv(P079);
 32.1277 +    glNormal3fv(N086);
 32.1278 +    glVertex3fv(P086);
 32.1279 +    glNormal3fv(N078);
 32.1280 +    glVertex3fv(P078);
 32.1281 +    glEnd();
 32.1282 +    glBegin(GL_POLYGON);
 32.1283 +    glNormal3fv(N086);
 32.1284 +    glVertex3fv(P086);
 32.1285 +    glNormal3fv(N088);
 32.1286 +    glVertex3fv(P088);
 32.1287 +    glNormal3fv(N078);
 32.1288 +    glVertex3fv(P078);
 32.1289 +    glEnd();
 32.1290 +    glBegin(GL_POLYGON);
 32.1291 +    glNormal3fv(N078);
 32.1292 +    glVertex3fv(P078);
 32.1293 +    glNormal3fv(N088);
 32.1294 +    glVertex3fv(P088);
 32.1295 +    glNormal3fv(N089);
 32.1296 +    glVertex3fv(P089);
 32.1297 +    glEnd();
 32.1298 +    glBegin(GL_POLYGON);
 32.1299 +    glNormal3fv(N088);
 32.1300 +    glVertex3fv(P088);
 32.1301 +    glNormal3fv(N086);
 32.1302 +    glVertex3fv(P086);
 32.1303 +    glNormal3fv(N089);
 32.1304 +    glVertex3fv(P089);
 32.1305 +    glEnd();
 32.1306 +    glBegin(GL_POLYGON);
 32.1307 +    glNormal3fv(N089);
 32.1308 +    glVertex3fv(P089);
 32.1309 +    glNormal3fv(N086);
 32.1310 +    glVertex3fv(P086);
 32.1311 +    glNormal3fv(N078);
 32.1312 +    glVertex3fv(P078);
 32.1313 +    glEnd();
 32.1314 +    glBegin(GL_POLYGON);
 32.1315 +    glNormal3fv(N086);
 32.1316 +    glVertex3fv(P086);
 32.1317 +    glNormal3fv(N084);
 32.1318 +    glVertex3fv(P084);
 32.1319 +    glNormal3fv(N078);
 32.1320 +    glVertex3fv(P078);
 32.1321 +    glEnd();
 32.1322 +    glBegin(GL_POLYGON);
 32.1323 +    glNormal3fv(N078);
 32.1324 +    glVertex3fv(P078);
 32.1325 +    glNormal3fv(N084);
 32.1326 +    glVertex3fv(P084);
 32.1327 +    glNormal3fv(N079);
 32.1328 +    glVertex3fv(P079);
 32.1329 +    glEnd();
 32.1330 +    glBegin(GL_POLYGON);
 32.1331 +    glNormal3fv(N084);
 32.1332 +    glVertex3fv(P084);
 32.1333 +    glNormal3fv(N082);
 32.1334 +    glVertex3fv(P082);
 32.1335 +    glNormal3fv(N079);
 32.1336 +    glVertex3fv(P079);
 32.1337 +    glEnd();
 32.1338 +}
 32.1339 +
 32.1340 +void
 32.1341 +Whale012(void)
 32.1342 +{
 32.1343 +    glBegin(GL_POLYGON);
 32.1344 +    glNormal3fv(N058);
 32.1345 +    glVertex3fv(P058);
 32.1346 +    glNormal3fv(N059);
 32.1347 +    glVertex3fv(P059);
 32.1348 +    glNormal3fv(N067);
 32.1349 +    glVertex3fv(P067);
 32.1350 +    glNormal3fv(N066);
 32.1351 +    glVertex3fv(P066);
 32.1352 +    glEnd();
 32.1353 +    glBegin(GL_POLYGON);
 32.1354 +    glNormal3fv(N059);
 32.1355 +    glVertex3fv(P059);
 32.1356 +    glNormal3fv(N052);
 32.1357 +    glVertex3fv(P052);
 32.1358 +    glNormal3fv(N060);
 32.1359 +    glVertex3fv(P060);
 32.1360 +    glEnd();
 32.1361 +    glBegin(GL_POLYGON);
 32.1362 +    glNormal3fv(N059);
 32.1363 +    glVertex3fv(P059);
 32.1364 +    glNormal3fv(N060);
 32.1365 +    glVertex3fv(P060);
 32.1366 +    glNormal3fv(N067);
 32.1367 +    glVertex3fv(P067);
 32.1368 +    glEnd();
 32.1369 +    glBegin(GL_POLYGON);
 32.1370 +    glNormal3fv(N058);
 32.1371 +    glVertex3fv(P058);
 32.1372 +    glNormal3fv(N066);
 32.1373 +    glVertex3fv(P066);
 32.1374 +    glNormal3fv(N065);
 32.1375 +    glVertex3fv(P065);
 32.1376 +    glEnd();
 32.1377 +    glBegin(GL_POLYGON);
 32.1378 +    glNormal3fv(N058);
 32.1379 +    glVertex3fv(P058);
 32.1380 +    glNormal3fv(N065);
 32.1381 +    glVertex3fv(P065);
 32.1382 +    glNormal3fv(N057);
 32.1383 +    glVertex3fv(P057);
 32.1384 +    glEnd();
 32.1385 +    glBegin(GL_POLYGON);
 32.1386 +    glNormal3fv(N056);
 32.1387 +    glVertex3fv(P056);
 32.1388 +    glNormal3fv(N057);
 32.1389 +    glVertex3fv(P057);
 32.1390 +    glNormal3fv(N065);
 32.1391 +    glVertex3fv(P065);
 32.1392 +    glEnd();
 32.1393 +    glBegin(GL_POLYGON);
 32.1394 +    glNormal3fv(N056);
 32.1395 +    glVertex3fv(P056);
 32.1396 +    glNormal3fv(N065);
 32.1397 +    glVertex3fv(P065);
 32.1398 +    glNormal3fv(N006);
 32.1399 +    glVertex3fv(P006);
 32.1400 +    glEnd();
 32.1401 +    glBegin(GL_POLYGON);
 32.1402 +    glNormal3fv(N056);
 32.1403 +    glVertex3fv(P056);
 32.1404 +    glNormal3fv(N006);
 32.1405 +    glVertex3fv(P006);
 32.1406 +    glNormal3fv(N063);
 32.1407 +    glVertex3fv(P063);
 32.1408 +    glEnd();
 32.1409 +    glBegin(GL_POLYGON);
 32.1410 +    glNormal3fv(N056);
 32.1411 +    glVertex3fv(P056);
 32.1412 +    glNormal3fv(N063);
 32.1413 +    glVertex3fv(P063);
 32.1414 +    glNormal3fv(N055);
 32.1415 +    glVertex3fv(P055);
 32.1416 +    glEnd();
 32.1417 +    glBegin(GL_POLYGON);
 32.1418 +    glNormal3fv(N054);
 32.1419 +    glVertex3fv(P054);
 32.1420 +    glNormal3fv(N062);
 32.1421 +    glVertex3fv(P062);
 32.1422 +    glNormal3fv(N005);
 32.1423 +    glVertex3fv(P005);
 32.1424 +    glEnd();
 32.1425 +    glBegin(GL_POLYGON);
 32.1426 +    glNormal3fv(N054);
 32.1427 +    glVertex3fv(P054);
 32.1428 +    glNormal3fv(N005);
 32.1429 +    glVertex3fv(P005);
 32.1430 +    glNormal3fv(N053);
 32.1431 +    glVertex3fv(P053);
 32.1432 +    glEnd();
 32.1433 +    glBegin(GL_POLYGON);
 32.1434 +    glNormal3fv(N053);
 32.1435 +    glVertex3fv(P053);
 32.1436 +    glNormal3fv(N005);
 32.1437 +    glVertex3fv(P005);
 32.1438 +    glNormal3fv(N060);
 32.1439 +    glVertex3fv(P060);
 32.1440 +    glEnd();
 32.1441 +    glBegin(GL_POLYGON);
 32.1442 +    glNormal3fv(N053);
 32.1443 +    glVertex3fv(P053);
 32.1444 +    glNormal3fv(N060);
 32.1445 +    glVertex3fv(P060);
 32.1446 +    glNormal3fv(N052);
 32.1447 +    glVertex3fv(P052);
 32.1448 +    glEnd();
 32.1449 +}
 32.1450 +
 32.1451 +void
 32.1452 +Whale013(void)
 32.1453 +{
 32.1454 +    glBegin(GL_POLYGON);
 32.1455 +    glNormal3fv(N066);
 32.1456 +    glVertex3fv(P066);
 32.1457 +    glNormal3fv(N067);
 32.1458 +    glVertex3fv(P067);
 32.1459 +    glNormal3fv(N096);
 32.1460 +    glVertex3fv(P096);
 32.1461 +    glNormal3fv(N097);
 32.1462 +    glVertex3fv(P097);
 32.1463 +    glEnd();
 32.1464 +    glBegin(GL_POLYGON);
 32.1465 +    glNormal3fv(N097);
 32.1466 +    glVertex3fv(P097);
 32.1467 +    glNormal3fv(N096);
 32.1468 +    glVertex3fv(P096);
 32.1469 +    glNormal3fv(N098);
 32.1470 +    glVertex3fv(P098);
 32.1471 +    glNormal3fv(N099);
 32.1472 +    glVertex3fv(P099);
 32.1473 +    glEnd();
 32.1474 +    glBegin(GL_POLYGON);
 32.1475 +    glNormal3fv(N065);
 32.1476 +    glVertex3fv(P065);
 32.1477 +    glNormal3fv(N066);
 32.1478 +    glVertex3fv(P066);
 32.1479 +    glNormal3fv(N097);
 32.1480 +    glVertex3fv(P097);
 32.1481 +    glEnd();
 32.1482 +    glBegin(GL_POLYGON);
 32.1483 +    glNormal3fv(N067);
 32.1484 +    glVertex3fv(P067);
 32.1485 +    glNormal3fv(N060);
 32.1486 +    glVertex3fv(P060);
 32.1487 +    glNormal3fv(N096);
 32.1488 +    glVertex3fv(P096);
 32.1489 +    glEnd();
 32.1490 +    glBegin(GL_POLYGON);
 32.1491 +    glNormal3fv(N060);
 32.1492 +    glVertex3fv(P060);
 32.1493 +    glNormal3fv(N005);
 32.1494 +    glVertex3fv(P005);
 32.1495 +    glNormal3fv(N096);
 32.1496 +    glVertex3fv(P096);
 32.1497 +    glEnd();
 32.1498 +    glBegin(GL_POLYGON);
 32.1499 +    glNormal3fv(N096);
 32.1500 +    glVertex3fv(P096);
 32.1501 +    glNormal3fv(N005);
 32.1502 +    glVertex3fv(P005);
 32.1503 +    glNormal3fv(N098);
 32.1504 +    glVertex3fv(P098);
 32.1505 +    glEnd();
 32.1506 +    glBegin(GL_POLYGON);
 32.1507 +    glNormal3fv(N006);
 32.1508 +    glVertex3fv(P006);
 32.1509 +    glNormal3fv(N065);
 32.1510 +    glVertex3fv(P065);
 32.1511 +    glNormal3fv(N097);
 32.1512 +    glVertex3fv(P097);
 32.1513 +    glEnd();
 32.1514 +    glBegin(GL_POLYGON);
 32.1515 +    glNormal3fv(N006);
 32.1516 +    glVertex3fv(P006);
 32.1517 +    glNormal3fv(N097);
 32.1518 +    glVertex3fv(P097);
 32.1519 +    glNormal3fv(N099);
 32.1520 +    glVertex3fv(P099);
 32.1521 +    glEnd();
 32.1522 +    glBegin(GL_POLYGON);
 32.1523 +    glVertex3fv(P005);
 32.1524 +    glVertex3fv(P006);
 32.1525 +    glVertex3fv(P099);
 32.1526 +    glVertex3fv(P098);
 32.1527 +    glEnd();
 32.1528 +}
 32.1529 +
 32.1530 +void
 32.1531 +Whale014(void)
 32.1532 +{
 32.1533 +    glBegin(GL_POLYGON);
 32.1534 +    glNormal3fv(N062);
 32.1535 +    glVertex3fv(P062);
 32.1536 +    glNormal3fv(N004);
 32.1537 +    glVertex3fv(P004);
 32.1538 +    glNormal3fv(N005);
 32.1539 +    glVertex3fv(P005);
 32.1540 +    glEnd();
 32.1541 +    glBegin(GL_POLYGON);
 32.1542 +    glVertex3fv(P006);
 32.1543 +    glVertex3fv(P005);
 32.1544 +    glVertex3fv(P004);
 32.1545 +    glVertex3fv(P008);
 32.1546 +    glEnd();
 32.1547 +    glBegin(GL_POLYGON);
 32.1548 +    glNormal3fv(N063);
 32.1549 +    glVertex3fv(P063);
 32.1550 +    glNormal3fv(N006);
 32.1551 +    glVertex3fv(P006);
 32.1552 +    glNormal3fv(N002);
 32.1553 +    glVertex3fv(P002);
 32.1554 +    glEnd();
 32.1555 +