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 + glBegin(GL_POLYGON);
32.1556 + glNormal3fv(N002);