changeset 21:95626beb91ab

Merge
author Henrik Ekeus <hekeus@eecs.qmul.ac.uk>
date Wed, 01 Feb 2012 16:17:32 +0000
parents 8bb99cbe3341 (current diff) 055d7524bae4 (diff)
children 4dcc4312b5fa 77b24c2f2c40
files bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/GLUT bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/copy.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/extrude.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glsmap.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glsmapint.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glut.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glutbitmap.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glutf90.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glutstroke.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/gutil.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/intersect.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/port.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/rot.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/segment.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/tube.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/tube_gc.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/vvector.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/Caution.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUT.nib/classes.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUT.nib/info.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUT.nib/objects.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTClipboard.nib/classes.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTClipboard.nib/info.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTClipboard.nib/objects.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTPreferences.nib/classes.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTPreferences.nib/info.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTPreferences.nib/objects.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTUI.strings bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/InfoPlist.strings bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/Info.plist bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/blankCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/bottomCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/bottomleftCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/bottomrightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/crossCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/cycleCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/destroyCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/fingerCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/helpCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/leftCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/leftRightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/rightArrowCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/rightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/sprayCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/topCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/topleftCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/toprightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/upDownCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/waitCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/GLUT bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/copy.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/extrude.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glsmap.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glsmapint.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glut.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glutbitmap.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glutf90.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glutstroke.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/gutil.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/intersect.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/port.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/rot.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/segment.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/tube.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/tube_gc.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/vvector.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/Caution.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUT.nib/classes.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUT.nib/info.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUT.nib/objects.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTClipboard.nib/classes.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTClipboard.nib/info.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTClipboard.nib/objects.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTPreferences.nib/classes.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTPreferences.nib/info.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTPreferences.nib/objects.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTUI.strings bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/InfoPlist.strings bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/Info.plist bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/blankCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/bottomCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/bottomleftCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/bottomrightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/crossCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/cycleCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/destroyCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/fingerCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/helpCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/leftCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/leftRightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/rightArrowCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/rightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/sprayCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/topCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/topleftCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/toprightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/upDownCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/waitCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/GLUT bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/copy.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/extrude.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glsmap.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glsmapint.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glut.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glutbitmap.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glutf90.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glutstroke.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/gutil.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/intersect.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/port.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/rot.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/segment.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/tube.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/tube_gc.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/vvector.h bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/Caution.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUT.nib/classes.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUT.nib/info.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUT.nib/objects.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTClipboard.nib/classes.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTClipboard.nib/info.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTClipboard.nib/objects.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTPreferences.nib/classes.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTPreferences.nib/info.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTPreferences.nib/objects.nib bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTUI.strings bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/Info.plist bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/blankCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/bottomCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/bottomleftCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/bottomrightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/crossCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/cycleCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/destroyCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/fingerCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/helpCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/leftCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/leftRightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/rightArrowCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/rightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/sprayCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/topCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/topleftCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/toprightCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/upDownCursor.tiff bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/waitCursor.tiff bin/MelodyTriangle.app/Contents/Info.plist bin/MelodyTriangle.app/Contents/MacOS/MelodyTriangle bin/MelodyTriangle.app/Contents/MacOS/libfmodex.dylib bin/MelodyTriangle.app/Contents/PkgInfo
diffstat 159 files changed, 311 insertions(+), 12609 deletions(-) [+]
line wrap: on
line diff
--- a/MelodyTriangle.xcodeproj/project.pbxproj	Wed Feb 01 16:17:12 2012 +0000
+++ b/MelodyTriangle.xcodeproj/project.pbxproj	Wed Feb 01 16:17:32 2012 +0000
@@ -7,40 +7,6 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		C852874814C5BF6800AE6996 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; };
-		C852874914C5BF6800AE6996 /* testApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */; };
-		C852874A14C5BF6800AE6996 /* melodyTriangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8E1D9D914BF50E0000A0193 /* melodyTriangle.cpp */; };
-		C852874B14C5BF6800AE6996 /* Voice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8E1DA4214BF60B7000A0193 /* Voice.cpp */; };
-		C852874C14C5BF6800AE6996 /* ofxOscBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8B1A91F14C47861003CDFD0 /* ofxOscBundle.cpp */; };
-		C852874D14C5BF6800AE6996 /* ofxOscMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8B1A92114C47861003CDFD0 /* ofxOscMessage.cpp */; };
-		C852874E14C5BF6800AE6996 /* ofxOscReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8B1A92314C47861003CDFD0 /* ofxOscReceiver.cpp */; };
-		C852874F14C5BF6800AE6996 /* ofxOscSender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8B1A92514C47861003CDFD0 /* ofxOscSender.cpp */; };
-		C852875114C5BF6800AE6996 /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2421E10CC549C004149E2 /* openFrameworksDebug.a */; };
-		C852875214C5BF6800AE6996 /* GLee.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE0A90E8CC67C009D7055 /* GLee.a */; };
-		C852875314C5BF6800AE6996 /* rtAudio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE2E30E8CC69C009D7055 /* rtAudio.a */; };
-		C852875414C5BF6800AE6996 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9710E8CC7DD009D7055 /* AGL.framework */; };
-		C852875514C5BF6800AE6996 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9720E8CC7DD009D7055 /* ApplicationServices.framework */; };
-		C852875614C5BF6800AE6996 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9730E8CC7DD009D7055 /* AudioToolbox.framework */; };
-		C852875714C5BF6800AE6996 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9740E8CC7DD009D7055 /* Carbon.framework */; };
-		C852875814C5BF6800AE6996 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9750E8CC7DD009D7055 /* CoreAudio.framework */; };
-		C852875914C5BF6800AE6996 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9760E8CC7DD009D7055 /* CoreFoundation.framework */; };
-		C852875A14C5BF6800AE6996 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9770E8CC7DD009D7055 /* CoreServices.framework */; };
-		C852875B14C5BF6800AE6996 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; };
-		C852875C14C5BF6800AE6996 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; };
-		C852875D14C5BF6800AE6996 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; };
-		C852875E14C5BF6800AE6996 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; };
-		C852875F14C5BF6800AE6996 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424610CC5A17004149E2 /* IOKit.framework */; };
-		C852876014C5BF6800AE6996 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2425F10CC5A78004149E2 /* GLUT.framework */; };
-		C852876114C5BF6800AE6996 /* CppUnit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2427A10CC5B66004149E2 /* CppUnit.a */; };
-		C852876214C5BF6800AE6996 /* PocoFoundation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2427B10CC5B66004149E2 /* PocoFoundation.a */; };
-		C852876314C5BF6800AE6996 /* PocoNet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2427C10CC5B66004149E2 /* PocoNet.a */; };
-		C852876414C5BF6800AE6996 /* PocoUtil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2427D10CC5B66004149E2 /* PocoUtil.a */; };
-		C852876514C5BF6800AE6996 /* PocoXML.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2427E10CC5B66004149E2 /* PocoXML.a */; };
-		C852876614C5BF6800AE6996 /* freetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2429310CC5C38004149E2 /* freetype.a */; };
-		C852876714C5BF6800AE6996 /* libfmodex.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C242CC10CC650E004149E2 /* libfmodex.dylib */; };
-		C852876814C5BF6800AE6996 /* freeimage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C246D910CCAE22004149E2 /* freeimage.a */; };
-		C852876914C5BF6800AE6996 /* osc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C8B1A91B14C47861003CDFD0 /* osc.a */; };
-		C852876C14C5BF6800AE6996 /* GLUT.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = E4C2425F10CC5A78004149E2 /* GLUT.framework */; };
 		C8B1A92714C47861003CDFD0 /* osc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C8B1A91B14C47861003CDFD0 /* osc.a */; };
 		C8B1A92814C47861003CDFD0 /* ofxOscBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8B1A91F14C47861003CDFD0 /* ofxOscBundle.cpp */; };
 		C8B1A92914C47861003CDFD0 /* ofxOscMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C8B1A92114C47861003CDFD0 /* ofxOscMessage.cpp */; };
@@ -60,7 +26,6 @@
 		E45BE9830E8CC7DD009D7055 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE9790E8CC7DD009D7055 /* OpenGL.framework */; };
 		E45BE9840E8CC7DD009D7055 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */; };
 		E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; };
-		E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */; };
 		E4C2422B10CC554B004149E2 /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2421E10CC549C004149E2 /* openFrameworksDebug.a */; };
 		E4C2424710CC5A17004149E2 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424410CC5A17004149E2 /* AppKit.framework */; };
 		E4C2424810CC5A17004149E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4C2424510CC5A17004149E2 /* Cocoa.framework */; };
@@ -78,13 +43,6 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
-		C852874614C5BF6800AE6996 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = E4C2421610CC549C004149E2 /* openFrameworksLib.xcodeproj */;
-			proxyType = 1;
-			remoteGlobalIDString = E4B27C1410CBEB8E00536013;
-			remoteInfo = openFrameworks;
-		};
 		E4C2421D10CC549C004149E2 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = E4C2421610CC549C004149E2 /* openFrameworksLib.xcodeproj */;
@@ -102,16 +60,6 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXCopyFilesBuildPhase section */
-		C852876B14C5BF6800AE6996 /* CopyFiles */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 10;
-			files = (
-				C852876C14C5BF6800AE6996 /* GLUT.framework in CopyFiles */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		E4C2427710CC5ABF004149E2 /* CopyFiles */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
@@ -125,9 +73,6 @@
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
-		C852873414C5BF1A00AE6996 /* MelodyTriangle_Windowed-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MelodyTriangle_Windowed-Info.plist"; sourceTree = "<group>"; };
-		C852877114C5BF6800AE6996 /* MelodyTriangle_windowed.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MelodyTriangle_windowed.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		C852877314C5BF6800AE6996 /* MelodyTriangle copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MelodyTriangle copy.plist"; sourceTree = "<group>"; };
 		C8B1A90614C47861003CDFD0 /* install.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = install.xml; sourceTree = "<group>"; };
 		C8B1A90B14C47861003CDFD0 /* IpEndpointName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IpEndpointName.h; sourceTree = "<group>"; };
 		C8B1A90C14C47861003CDFD0 /* NetworkingUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkingUtils.h; sourceTree = "<group>"; };
@@ -180,8 +125,6 @@
 		E45BE97A0E8CC7DD009D7055 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = "<absolute>"; };
 		E4B69B5B0A3A1756003C02F2 /* MelodyTriangle.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MelodyTriangle.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; };
-		E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = testApp.cpp; path = src/testApp.cpp; sourceTree = SOURCE_ROOT; };
-		E4B69E1F0A3A1BDC003C02F2 /* testApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = testApp.h; path = src/testApp.h; sourceTree = SOURCE_ROOT; };
 		E4B6FCAD0C3E899E008CF71C /* MelodyTriangle.plist */ = {isa = PBXFileReference; explicitFileType = text.plist.xml; fileEncoding = 30; path = MelodyTriangle.plist; sourceTree = "<group>"; };
 		E4C2421610CC549C004149E2 /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; };
 		E4C2424410CC5A17004149E2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
@@ -199,38 +142,6 @@
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
-		C852875014C5BF6800AE6996 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				C852875114C5BF6800AE6996 /* openFrameworksDebug.a in Frameworks */,
-				C852875214C5BF6800AE6996 /* GLee.a in Frameworks */,
-				C852875314C5BF6800AE6996 /* rtAudio.a in Frameworks */,
-				C852875414C5BF6800AE6996 /* AGL.framework in Frameworks */,
-				C852875514C5BF6800AE6996 /* ApplicationServices.framework in Frameworks */,
-				C852875614C5BF6800AE6996 /* AudioToolbox.framework in Frameworks */,
-				C852875714C5BF6800AE6996 /* Carbon.framework in Frameworks */,
-				C852875814C5BF6800AE6996 /* CoreAudio.framework in Frameworks */,
-				C852875914C5BF6800AE6996 /* CoreFoundation.framework in Frameworks */,
-				C852875A14C5BF6800AE6996 /* CoreServices.framework in Frameworks */,
-				C852875B14C5BF6800AE6996 /* OpenGL.framework in Frameworks */,
-				C852875C14C5BF6800AE6996 /* QuickTime.framework in Frameworks */,
-				C852875D14C5BF6800AE6996 /* AppKit.framework in Frameworks */,
-				C852875E14C5BF6800AE6996 /* Cocoa.framework in Frameworks */,
-				C852875F14C5BF6800AE6996 /* IOKit.framework in Frameworks */,
-				C852876014C5BF6800AE6996 /* GLUT.framework in Frameworks */,
-				C852876114C5BF6800AE6996 /* CppUnit.a in Frameworks */,
-				C852876214C5BF6800AE6996 /* PocoFoundation.a in Frameworks */,
-				C852876314C5BF6800AE6996 /* PocoNet.a in Frameworks */,
-				C852876414C5BF6800AE6996 /* PocoUtil.a in Frameworks */,
-				C852876514C5BF6800AE6996 /* PocoXML.a in Frameworks */,
-				C852876614C5BF6800AE6996 /* freetype.a in Frameworks */,
-				C852876714C5BF6800AE6996 /* libfmodex.dylib in Frameworks */,
-				C852876814C5BF6800AE6996 /* freeimage.a in Frameworks */,
-				C852876914C5BF6800AE6996 /* osc.a in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		E4B69B590A3A1756003C02F2 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -548,9 +459,6 @@
 				E4B69E1C0A3A1BDC003C02F2 /* src */,
 				E4C2422310CC54B6004149E2 /* openFrameworks */,
 				E45BE0360E8CC5DE009D7055 /* libs */,
-				C852873414C5BF1A00AE6996 /* MelodyTriangle_Windowed-Info.plist */,
-				C852877114C5BF6800AE6996 /* MelodyTriangle_windowed.app */,
-				C852877314C5BF6800AE6996 /* MelodyTriangle copy.plist */,
 			);
 			sourceTree = "<group>";
 		};
@@ -561,10 +469,8 @@
 				C8E1DA4114BF60B7000A0193 /* Voice.h */,
 				C8E1DA4214BF60B7000A0193 /* Voice.cpp */,
 				E4B69E1D0A3A1BDC003C02F2 /* main.cpp */,
-				E4B69E1E0A3A1BDC003C02F2 /* testApp.cpp */,
 				C8E1D9D914BF50E0000A0193 /* melodyTriangle.cpp */,
 				C8E1D9DA14BF50E0000A0193 /* melodyTriangle.h */,
-				E4B69E1F0A3A1BDC003C02F2 /* testApp.h */,
 			);
 			path = src;
 			sourceTree = SOURCE_ROOT;
@@ -655,25 +561,6 @@
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
-		C852874414C5BF6800AE6996 /* MelodyTriangle_windowed */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = C852876D14C5BF6800AE6996 /* Build configuration list for PBXNativeTarget "MelodyTriangle_windowed" */;
-			buildPhases = (
-				C852874714C5BF6800AE6996 /* Sources */,
-				C852875014C5BF6800AE6996 /* Frameworks */,
-				C852876A14C5BF6800AE6996 /* ShellScript */,
-				C852876B14C5BF6800AE6996 /* CopyFiles */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				C852874514C5BF6800AE6996 /* PBXTargetDependency */,
-			);
-			name = MelodyTriangle_windowed;
-			productName = myOFApp;
-			productReference = C852877114C5BF6800AE6996 /* MelodyTriangle_windowed.app */;
-			productType = "com.apple.product-type.application";
-		};
 		E4B69B5A0A3A1756003C02F2 /* MelodyTriangle */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "MelodyTriangle" */;
@@ -720,7 +607,6 @@
 			projectRoot = "";
 			targets = (
 				E4B69B5A0A3A1756003C02F2 /* MelodyTriangle */,
-				C852874414C5BF6800AE6996 /* MelodyTriangle_windowed */,
 			);
 		};
 /* End PBXProject section */
@@ -736,19 +622,6 @@
 /* End PBXReferenceProxy section */
 
 /* Begin PBXShellScriptBuildPhase section */
-		C852876A14C5BF6800AE6996 /* ShellScript */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "cp -f ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/libfmodex.dylib\"\ninstall_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\" ";
-		};
 		E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -765,27 +638,11 @@
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
-		C852874714C5BF6800AE6996 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				C852874814C5BF6800AE6996 /* main.cpp in Sources */,
-				C852874914C5BF6800AE6996 /* testApp.cpp in Sources */,
-				C852874A14C5BF6800AE6996 /* melodyTriangle.cpp in Sources */,
-				C852874B14C5BF6800AE6996 /* Voice.cpp in Sources */,
-				C852874C14C5BF6800AE6996 /* ofxOscBundle.cpp in Sources */,
-				C852874D14C5BF6800AE6996 /* ofxOscMessage.cpp in Sources */,
-				C852874E14C5BF6800AE6996 /* ofxOscReceiver.cpp in Sources */,
-				C852874F14C5BF6800AE6996 /* ofxOscSender.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		E4B69B580A3A1756003C02F2 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */,
-				E4B69E210A3A1BDC003C02F2 /* testApp.cpp in Sources */,
 				C8E1D9DB14BF50E0000A0193 /* melodyTriangle.cpp in Sources */,
 				C8E1DA4314BF60B7000A0193 /* Voice.cpp in Sources */,
 				C8B1A92814C47861003CDFD0 /* ofxOscBundle.cpp in Sources */,
@@ -798,11 +655,6 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
-		C852874514C5BF6800AE6996 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			name = openFrameworks;
-			targetProxy = C852874614C5BF6800AE6996 /* PBXContainerItemProxy */;
-		};
 		E4C2422810CC54DA004149E2 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			name = openFrameworks;
@@ -811,161 +663,6 @@
 /* End PBXTargetDependency section */
 
 /* Begin XCBuildConfiguration section */
-		C852876E14C5BF6800AE6996 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
-				);
-				FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\"";
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_MODEL_TUNING = G4;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
-				INFOPLIST_FILE = "MelodyTriangle copy.plist";
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/../../../addons/ofxOsc/libs/oscpack/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/freeimage/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14 = "\"$(SRCROOT)/../../../libs/fmodex/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15 = "\"$(SRCROOT)/../../../libs/freetype/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../../libs/FreeImage/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../../../libs/GLee/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SRCROOT)/../../../libs/poco/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6 = "\"$(SRCROOT)/../../../libs/rtAudio/lib/osx\"";
-				PREBINDING = NO;
-				PRODUCT_NAME = "$(TARGET_NAME)Debug";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = Debug;
-		};
-		C852876F14C5BF6800AE6996 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = YES;
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
-				);
-				FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\"";
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_MODEL_TUNING = G4;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
-				INFOPLIST_FILE = "MelodyTriangle copy.plist";
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/freeimage/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14 = "\"$(SRCROOT)/../../../libs/fmodex/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15 = "\"$(SRCROOT)/../../../libs/freetype/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../../libs/FreeImage/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SRCROOT)/../../../addons/ofxOsc/libs/oscpack/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../../../libs/GLee/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SRCROOT)/../../../libs/poco/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6 = "\"$(SRCROOT)/../../../libs/rtAudio/lib/osx\"";
-				PREBINDING = NO;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = Release;
-		};
-		C852877014C5BF6800AE6996 /* ReleaseUniversal */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = YES;
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
-				);
-				FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\"";
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_MODEL_TUNING = G4;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
-				INFOPLIST_FILE = "MelodyTriangle copy.plist";
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_3)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_7)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_8)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_9)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_10)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_11)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_12)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_13)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)",
-					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
-				);
-				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/../../../addons/ofxOsc/libs/oscpack/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/freeimage/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_14 = "\"$(SRCROOT)/../../../libs/fmodex/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_15 = "\"$(SRCROOT)/../../../libs/freetype/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../../libs/FreeImage/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"$(SRCROOT)/../../../libs/GLee/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SRCROOT)/../../../libs/poco/lib/osx\"";
-				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_6 = "\"$(SRCROOT)/../../../libs/rtAudio/lib/osx\"";
-				PREBINDING = NO;
-				PRODUCT_NAME = "$(TARGET_NAME)Universal";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = ReleaseUniversal;
-		};
 		E4B27CA010CBF8A600536013 /* ReleaseUniversal */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -1233,16 +930,6 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		C852876D14C5BF6800AE6996 /* Build configuration list for PBXNativeTarget "MelodyTriangle_windowed" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C852876E14C5BF6800AE6996 /* Debug */,
-				C852876F14C5BF6800AE6996 /* Release */,
-				C852877014C5BF6800AE6996 /* ReleaseUniversal */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
 		E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "MelodyTriangle" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/GLUT has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/copy.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-
-/*
- *
- * Written By Linas Vepstas November 1991 
- */
-
-
-#define COPY_THREE_WORDS(A,B) {						\
-	struct three_words { int a, b, c, };				\
-	*(struct three_words *) (A) = *(struct three_words *) (B);	\
-}
-
-#define COPY_FOUR_WORDS(A,B) {						\
-	struct four_words { int a, b, c, d, };				\
-	*(struct four_words *) (A) = *(struct four_words *) (B);	\
-}
-
-/* ============================================================= */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/extrude.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-
-/*
- * extrude.h
- *
- * FUNCTION:
- * prototypes for privately used subroutines for the tubing library
- *
- * HISTORY:
- * Linas Vepstas 1991
- */
- 
-#include "port.h" /* for gleDouble */
-
-#ifndef M_PI
-#define M_PI  3.14159265358979323846
-#endif
-
-/* ============================================================ */
-/* 
- * Provides choice of calling subroutine, vs. invoking macro.
- * Basically, inlines the source, or not.
- * Trades performance for executable size.
- */
-
-#define INLINE_INTERSECT
-#ifdef INLINE_INTERSECT
-#define INNERSECT(sect,p,n,v1,v2) { INTERSECT(sect,p,n,v1,v2); }
-#else
-#define INNERSECT(sect,p,n,v1,v2) intersect(sect,p,n,v1,v2)
-#endif /* INLINE_INTERSECT */
-
-/* ============================================================ */
-/* The folowing defines give a kludgy way of accessing the qmesh primitive */
-
-/*
-#define bgntmesh _emu_qmesh_bgnqmesh
-#define endtmesh _emu_qmesh_endqmesh
-#define c3f _emu_qmesh_c3f
-#define n3f _emu_qmesh_n3f
-#define v3f _emu_qmesh_v3f
-*/
-
-/* ============================================================ */
-
-extern void up_sanity_check (gleDouble up[3],      /* up vector for contour */
-                      int npoints,              /* numpoints in poly-line */
-                      gleDouble point_array[][3]);   /* polyline */
-
-
-extern void draw_raw_style_end_cap (int ncp,     /* number of contour points */
-                             gleDouble contour[][2],     /* 2D contour */
-                             gleDouble zval,             /* where to draw cap */
-                             int frontwards);    /* front or back cap */
-
-extern void draw_round_style_cap_callback (int iloop,
-                                  double cap[][3],
-                                  float face_color[3],
-                                  gleDouble cut_vector[3],
-                                  gleDouble bisect_vector[3],
-                                  double norms[][3],
-                                  int frontwards);
-
-extern void draw_angle_style_front_cap (int ncp,
-                           gleDouble bi[3],
-                           gleDouble point_array[][3]);
-
-extern void extrusion_raw_join (int ncp,        /* number of contour points */
-                         gleDouble contour[][2],    /* 2D contour */
-                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
-                         gleDouble up[3],           /* up vector for contour */
-                         int npoints,           /* numpoints in poly-line */
-                         gleDouble point_array[][3],        /* polyline */
-                         float color_array[][3],        /* color of polyline */
-                         gleDouble xform_array[][2][3]);  /* 2D contour xforms */
-
-
-extern void extrusion_round_or_cut_join (int ncp, /* number of contour points */
-                         gleDouble contour[][2],    /* 2D contour */
-                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
-                           gleDouble up[3],         /* up vector for contour */
-                           int npoints,         /* numpoints in poly-line */
-                           gleDouble point_array[][3],      /* polyline */
-                           float color_array[][3],      /* color of polyline */
-                           gleDouble xform_array[][2][3]);  /* 2D contour xforms */
-
-
-extern void extrusion_angle_join (int ncp,      /* number of contour points */
-                         gleDouble contour[][2],    /* 2D contour */
-                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
-                           gleDouble up[3],         /* up vector for contour */
-                           int npoints,         /* numpoints in poly-line */
-                           gleDouble point_array[][3],      /* polyline */
-                           float color_array[][3],      /* color of polyline */
-                           gleDouble xform_array[][2][3]);  /* 2D contour xforms */
-
-/* -------------------------- end of file -------------------------------- */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glsmap.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-#ifndef __glsmap_h__
-#define __glsmap_h__
-
-/* Copyright (c) Mark J. Kilgard, 1998.  */
-
-/* This program is freely distributable without licensing fees
-   and is provided without guarantee or warrantee expressed or
-   implied. This program is -not- in the public domain. */
-
-#if defined(_WIN32)
-
-/* Try hard to avoid including <windows.h> to avoid name space pollution,
-   but Win32's <GL/gl.h> needs APIENTRY and WINGDIAPI defined properly. */
-# if 0
-#  define  WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-# else
-   /* XXX This is from Win32's <windef.h> */
-#  ifndef APIENTRY
-#   if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
-#    define APIENTRY    __stdcall
-#   else
-#    define APIENTRY
-#   endif
-#  endif
-#  ifndef CALLBACK
-    /* XXX This is from Win32's <winnt.h> */
-#   if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
-#    define CALLBACK __stdcall
-#   else
-#    define CALLBACK
-#   endif
-#  endif
-   /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
-#  ifndef WINGDIAPI
-#   define WINGDIAPI __declspec(dllimport)
-#  endif
-   /* XXX This is from Win32's <ctype.h> */
-#  ifndef _WCHAR_T_DEFINED
-typedef unsigned short wchar_t;
-#   define _WCHAR_T_DEFINED
-#  endif
-# endif
-
-#pragma warning (disable:4244)	/* Disable bogus conversion warnings. */
-#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-
-#endif /* _WIN32 */
-
-#include <OpenGL/gl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-        SMAP_CLEAR_SMAP_TEXTURE = 0x1,
-        SMAP_GENERATE_VIEW_MIPMAPS = 0x2,
-        SMAP_GENERATE_SMAP_MIPMAPS = 0x4,
-        SMAP_GENERATE_MIPMAPS = 0x6  /* both of above */
-} SphereMapFlags;
-
-/* Cube view enumerants. */
-enum {
-	SMAP_FRONT = 0,
-	SMAP_TOP = 1,
-	SMAP_BOTTOM = 2,
-	SMAP_LEFT = 3,
-	SMAP_RIGHT = 4,
-	SMAP_BACK = 5
-};
-
-typedef struct _SphereMap SphereMap;
-
-extern SphereMap *smapCreateSphereMap(SphereMap *shareSmap);
-extern void smapDestroySphereMap(SphereMap *smap);
-
-extern void smapConfigureSphereMapMesh(SphereMap *smap, int steps, int rings, int edgeExtend);
-
-extern void smapSetSphereMapTexObj(SphereMap *smap, GLuint texobj);
-extern void smapSetViewTexObj(SphereMap *smap, GLuint texobj);
-extern void smapSetViewTexObjs(SphereMap *smap, GLuint texobjs[6]);
-extern void smapGetSphereMapTexObj(SphereMap *smap, GLuint *texobj);
-extern void smapGetViewTexObj(SphereMap *smap, GLuint *texobj);
-extern void smapGetViewTexObjs(SphereMap *smap, GLuint texobjs[6]);
-
-extern void smapSetFlags(SphereMap *smap, SphereMapFlags flags);
-extern void smapGetFlags(SphereMap *smap, SphereMapFlags *flags);
-
-extern void smapSetViewOrigin(SphereMap *smap, GLint x, GLint y);
-extern void smapSetSphereMapOrigin(SphereMap *smap, GLint x, GLint y);
-extern void smapGetViewOrigin(SphereMap *smap, GLint *x, GLint *y);
-extern void smapGetSphereMapOrigin(SphereMap *smap, GLint *x, GLint *y);
-
-extern void smapSetEye(SphereMap *smap, GLfloat eyex, GLfloat eyey,	GLfloat eyez);
-extern void smapSetEyeVector(SphereMap *smap, GLfloat *eye);
-extern void smapSetUp(SphereMap *smap, GLfloat upx, GLfloat upy, GLfloat upz);
-extern void smapSetUpVector(SphereMap *smap, GLfloat *up);
-extern void smapSetObject(SphereMap *smap, GLfloat objx, GLfloat objy, GLfloat objz);
-extern void smapSetObjectVector(SphereMap *smap, GLfloat *obj);
-extern void smapGetEye(SphereMap *smap, GLfloat *eyex, GLfloat *eyey, GLfloat *eyez);
-extern void smapGetEyeVector(SphereMap *smap, GLfloat *eye);
-extern void smapGetUp(SphereMap *smap, GLfloat *upx, GLfloat *upy, GLfloat *upz);
-extern void smapGetUpVector(SphereMap *smap, GLfloat *up);
-extern void smapGetObject(SphereMap *smap, GLfloat *objx, GLfloat *objy, GLfloat *objz);
-extern void smapGetObjectVector(SphereMap *smap, GLfloat *obj);
-
-extern void smapSetNearFar(SphereMap *smap, GLfloat viewNear, GLfloat viewFar);
-extern void smapGetNearFar(SphereMap *smap, GLfloat *viewNear, GLfloat *viewFar);
-
-extern void smapSetSphereMapTexDim(SphereMap *smap, GLsizei texdim);
-extern void smapSetViewTexDim(SphereMap *smap, GLsizei texdim);
-extern void smapGetSphereMapTexDim(SphereMap *smap, GLsizei *texdim);
-extern void smapGetViewTexDim(SphereMap *smap, GLsizei *texdim);
-
-extern void smapSetContextData(SphereMap *smap, void *context);
-extern void smapGetContextData(SphereMap *smap, void **context);
-
-extern void smapSetPositionLightsFunc(SphereMap *smap, void (*positionLights)(int view, void *context));
-extern void smapSetDrawViewFunc(SphereMap *smap, void (*drawView)(int view, void *context));
-extern void smapGetPositionLightsFunc(SphereMap *smap, void (**positionLights)(int view, void *context));
-extern void smapGetDrawViewFunc(SphereMap *smap, void (**drawView)(int view, void *context));
-
-extern void smapGenViewTex(SphereMap *smap, int view);
-extern void smapGenViewTexs(SphereMap *smap);
-extern void smapGenSphereMapFromViewTexs(SphereMap *smap);
-extern void smapGenSphereMap(SphereMap *smap);
-extern void smapGenSphereMapWithOneViewTex(SphereMap *smap);
-
-extern int smapRvecToSt(float rvec[3], float st[2]);
-extern void smapStToRvec(float *st, float *rvec);
-
-#ifdef __cplusplus
-}
-
-#endif
-#endif /* __glsmap_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glsmapint.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-#ifndef __glsmapint_h__
-#define __glsmapint_h__
-
-/* Copyright (c) Mark J. Kilgard, 1998. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#include "glsmap.h"
-
-enum { X = 0, Y = 1, Z = 2 };
-
-#define INITFACE(mesh) \
-	int steps = mesh->steps; \
-	int sqsteps = mesh->steps * mesh->steps
-
-#define FACE(side,y,x) \
-	mesh->face[(side)*sqsteps + (y)*steps + (x)]
-
-#define FACExy(side,i,j) \
-	(&FACE(side,i,j).x)
-
-#define FACEst(side,i,j) \
-	(&FACE(side,i,j).s)
-
-#define INITBACK(mesh) \
-	int allrings = mesh->rings + mesh->edgeExtend; \
-	int ringedspokes = allrings * mesh->steps
-
-#define BACK(edge,ring,spoke) \
-	mesh->back[(edge)*ringedspokes + (ring)*mesh->steps + (spoke)]
-
-#define BACKxy(edge,ring,spoke) \
-	(&BACK(edge,ring,spoke).x)
-
-#define BACKst(edge,ring,spoke) \
-	(&BACK(edge,ring,spoke).s)
-
-typedef struct _STXY {
-	GLfloat s, t;
-	GLfloat x, y;
-} STXY;
-
-typedef struct _SphereMapMesh {
-
-	int refcnt;
-
-	int steps;
-	int rings;
-	int edgeExtend;
-
-	STXY *face;
-	STXY *back;
-
-} SphereMapMesh;
-
-struct _SphereMap {
-
-	/* Shared sphere map mesh vertex data. */
-	SphereMapMesh *mesh;
-
-	/* Texture object ids. */
-	GLuint smapTexObj;
-	GLuint viewTexObjs[6];
-	GLuint viewTexObj;
-
-        /* Flags */
-        SphereMapFlags flags;
-
-	/* Texture dimensions must be a power of two. */
-	int viewTexDim;  /* view texture dimension */
-	int smapTexDim;  /* sphere map texture dimension */
-
-	/* Viewport origins for view and sphere map rendering. */
-	int viewOrigin[2];
-	int smapOrigin[2];
-
-	/* Viewing vectors. */
-	GLfloat eye[3];
-	GLfloat up[3];
-	GLfloat obj[3];
-
-	/* Projection parameters. */
-	GLfloat viewNear;
-	GLfloat viewFar;
-
-	/* Rendering callbacks. */
-	void (*positionLights)(int view, void *context);
-	void (*drawView)(int view, void *context);
-
-	/* Application specified callback data. */
-	void *context;
-
-};
-
-/* Library internal routines. */
-extern void __smapDrawSphereMapMeshSide(SphereMapMesh *mesh, int side);
-extern void __smapDrawSphereMapMeshBack(SphereMapMesh *mesh);
-extern void __smapValidateSphereMapMesh(SphereMapMesh *mesh);
-
-#endif /* __glsmapint_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glut.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,644 +0,0 @@
-#ifndef __glut_h__
-#define __glut_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */
-
-/* This program is freely distributable without licensing fees  and is
-   provided without guarantee or warrantee expressed or  implied. This
-   program is -not- in the public domain. */
-
-#if defined(_WIN32)
-
-/* GLUT 3.7 now tries to avoid including <windows.h>
-   to avoid name space pollution, but Win32's <GL/gl.h> 
-   needs APIENTRY and WINGDIAPI defined properly. */
-# if 0
-#  define  WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-# else
-   /* XXX This is from Win32's <windef.h> */
-#  ifndef APIENTRY
-#   define GLUT_APIENTRY_DEFINED
-#   if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
-#    define APIENTRY    __stdcall
-#   else
-#    define APIENTRY
-#   endif
-#  endif
-   /* XXX This is from Win32's <winnt.h> */
-#  ifndef CALLBACK
-#   if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
-#    define CALLBACK __stdcall
-#   else
-#    define CALLBACK
-#   endif
-#  endif
-   /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
-#  ifndef WINGDIAPI
-#   define GLUT_WINGDIAPI_DEFINED
-#   define WINGDIAPI __declspec(dllimport)
-#  endif
-   /* XXX This is from Win32's <ctype.h> */
-#  ifndef _WCHAR_T_DEFINED
-typedef unsigned short wchar_t;
-#   define _WCHAR_T_DEFINED
-#  endif
-# endif
-
-#pragma comment (lib, "winmm.lib")     /* link with Windows MultiMedia lib */
-#pragma comment (lib, "opengl32.lib")  /* link with Microsoft OpenGL lib */
-#pragma comment (lib, "glu32.lib")     /* link with OpenGL Utility lib */
-#pragma comment (lib, "glut32.lib")    /* link with Win32 GLUT lib */
-
-#pragma warning (disable:4244)	/* Disable bogus conversion warnings. */
-#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-
-#endif
-
-#if defined(__APPLE__) || defined(MACOSX)
-#include <AvailabilityMacros.h>
-#include <OpenGL/gl.h>
-#include <OpenGL/glu.h>
-#else
-#include <GL/gl.h>
-#include <GL/glu.h>
-#endif
-
-/* define APIENTRY and CALLBACK to null string if we aren't on Win32 */
-#if !defined(_WIN32)
-#define APIENTRY
-#define GLUT_APIENTRY_DEFINED
-#define CALLBACK
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- GLUT API revision history:
- 
- GLUT_API_VERSION is updated to reflect incompatible GLUT
- API changes (interface changes, semantic changes, deletions,
- or additions).
- 
- GLUT_API_VERSION=1  First public release of GLUT.  11/29/94
-
- GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
- extension.  Supports new input devices like tablet, dial and button
- box, and Spaceball.  Easy to query OpenGL extensions.
-
- GLUT_API_VERSION=3  glutMenuStatus added.
-
- GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
- glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
- video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
- glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
- glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
-
- GLUT_API_VERSION=5  glutGetProcAddress (added by BrianP)
-**/
-#ifndef GLUT_API_VERSION  /* allow this to be overriden */
-#define GLUT_API_VERSION		5
-#endif
-
-/**
- GLUT implementation revision history:
- 
- GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
- API revisions and implementation revisions (ie, bug fixes).
-
- GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
- GLUT Xlib-based implementation.  11/29/94
-
- GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
- GLUT Xlib-based implementation providing GLUT version 2 
- interfaces.
-
- GLUT_XLIB_IMPLEMENTATION=3  mjk's GLUT 2.2 images. 4/17/95
-
- GLUT_XLIB_IMPLEMENTATION=4  mjk's GLUT 2.3 images. 6/?/95
-
- GLUT_XLIB_IMPLEMENTATION=5  mjk's GLUT 3.0 images. 10/?/95
-
- GLUT_XLIB_IMPLEMENTATION=7  mjk's GLUT 3.1+ with glutWarpPoitner.  7/24/96
-
- GLUT_XLIB_IMPLEMENTATION=8  mjk's GLUT 3.1+ with glutWarpPoitner
- and video resize.  1/3/97
-
- GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
-
- GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release.
-
- GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
-
- GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support.
-
- GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface.
-
- GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa <GL/glut.h>
-**/
-#ifndef GLUT_XLIB_IMPLEMENTATION  /* Allow this to be overriden. */
-#define GLUT_XLIB_IMPLEMENTATION	15
-#endif
-
-/**
- MacOS X GLUT implementation revision history:
- 
- GLUT_MACOSX_IMPLEMENTATION is updated to reflect MacOS X
- specific GLUT API revisions and implementation revisions
- (ie, bug fixes).
-
- GLUT_MACOSX_IMPLEMENTATION=1  glutSurfaceTexture.
-
- GLUT_MACOSX_IMPLEMENTATION=2  glutWMCloseFunc, glutCheckLoop.
-  
-**/
-#ifndef GLUT_MACOSX_IMPLEMENTATION  /* Allow this to be overriden. */
-#define GLUT_MACOSX_IMPLEMENTATION	2
-#endif
-
-/* Display mode bit masks. */
-#define GLUT_RGB			0
-#define GLUT_RGBA			GLUT_RGB
-#define GLUT_INDEX			1
-#define GLUT_SINGLE			0
-#define GLUT_DOUBLE			2
-#define GLUT_ACCUM			4
-#define GLUT_ALPHA			8
-#define GLUT_DEPTH			16
-#define GLUT_STENCIL			32
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_MULTISAMPLE		128
-#define GLUT_STEREO			256
-#endif
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_LUMINANCE			512
-#endif
-#define GLUT_NO_RECOVERY    1024
-
-/* Mouse buttons. */
-#define GLUT_LEFT_BUTTON		0
-#define GLUT_MIDDLE_BUTTON		1
-#define GLUT_RIGHT_BUTTON		2
-
-/* Mouse button  state. */
-#define GLUT_DOWN			0
-#define GLUT_UP				1
-
-#if (GLUT_API_VERSION >= 2)
-/* function keys */
-#define GLUT_KEY_F1			1
-#define GLUT_KEY_F2			2
-#define GLUT_KEY_F3			3
-#define GLUT_KEY_F4			4
-#define GLUT_KEY_F5			5
-#define GLUT_KEY_F6			6
-#define GLUT_KEY_F7			7
-#define GLUT_KEY_F8			8
-#define GLUT_KEY_F9			9
-#define GLUT_KEY_F10			10
-#define GLUT_KEY_F11			11
-#define GLUT_KEY_F12			12
-/* directional keys */
-#define GLUT_KEY_LEFT			100
-#define GLUT_KEY_UP			101
-#define GLUT_KEY_RIGHT			102
-#define GLUT_KEY_DOWN			103
-#define GLUT_KEY_PAGE_UP		104
-#define GLUT_KEY_PAGE_DOWN		105
-#define GLUT_KEY_HOME			106
-#define GLUT_KEY_END			107
-#define GLUT_KEY_INSERT			108
-#endif
-
-/* Entry/exit  state. */
-#define GLUT_LEFT			0
-#define GLUT_ENTERED			1
-
-/* Menu usage  state. */
-#define GLUT_MENU_NOT_IN_USE		0
-#define GLUT_MENU_IN_USE		1
-
-/* Visibility  state. */
-#define GLUT_NOT_VISIBLE		0
-#define GLUT_VISIBLE			1
-
-/* Window status  state. */
-#define GLUT_HIDDEN			0
-#define GLUT_FULLY_RETAINED		1
-#define GLUT_PARTIALLY_RETAINED		2
-#define GLUT_FULLY_COVERED		3
-
-/* Color index component selection values. */
-#define GLUT_RED			0
-#define GLUT_GREEN			1
-#define GLUT_BLUE			2
-
-/* Layers for use. */
-#define GLUT_NORMAL			0
-#define GLUT_OVERLAY			1
-
-#if defined(_WIN32)
-/* Stroke font constants (use these in GLUT program). */
-#define GLUT_STROKE_ROMAN		((void*)0)
-#define GLUT_STROKE_MONO_ROMAN		((void*)1)
-
-/* Bitmap font constants (use these in GLUT program). */
-#define GLUT_BITMAP_9_BY_15		((void*)2)
-#define GLUT_BITMAP_8_BY_13		((void*)3)
-#define GLUT_BITMAP_TIMES_ROMAN_10	((void*)4)
-#define GLUT_BITMAP_TIMES_ROMAN_24	((void*)5)
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_BITMAP_HELVETICA_10	((void*)6)
-#define GLUT_BITMAP_HELVETICA_12	((void*)7)
-#define GLUT_BITMAP_HELVETICA_18	((void*)8)
-#endif
-#else
-/* Stroke font opaque addresses (use constants instead in source code). */
-extern void *glutStrokeRoman;
-extern void *glutStrokeMonoRoman;
-
-/* Stroke font constants (use these in GLUT program). */
-#define GLUT_STROKE_ROMAN		(&glutStrokeRoman)
-#define GLUT_STROKE_MONO_ROMAN		(&glutStrokeMonoRoman)
-
-/* Bitmap font opaque addresses (use constants instead in source code). */
-extern void *glutBitmap9By15;
-extern void *glutBitmap8By13;
-extern void *glutBitmapTimesRoman10;
-extern void *glutBitmapTimesRoman24;
-extern void *glutBitmapHelvetica10;
-extern void *glutBitmapHelvetica12;
-extern void *glutBitmapHelvetica18;
-
-/* Bitmap font constants (use these in GLUT program). */
-#define GLUT_BITMAP_9_BY_15		(&glutBitmap9By15)
-#define GLUT_BITMAP_8_BY_13		(&glutBitmap8By13)
-#define GLUT_BITMAP_TIMES_ROMAN_10	(&glutBitmapTimesRoman10)
-#define GLUT_BITMAP_TIMES_ROMAN_24	(&glutBitmapTimesRoman24)
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_BITMAP_HELVETICA_10	(&glutBitmapHelvetica10)
-#define GLUT_BITMAP_HELVETICA_12	(&glutBitmapHelvetica12)
-#define GLUT_BITMAP_HELVETICA_18	(&glutBitmapHelvetica18)
-#endif
-#endif
-
-/* glutGet parameters. */
-#define GLUT_WINDOW_X			100
-#define GLUT_WINDOW_Y			101
-#define GLUT_WINDOW_WIDTH		102
-#define GLUT_WINDOW_HEIGHT		103
-#define GLUT_WINDOW_BUFFER_SIZE		104
-#define GLUT_WINDOW_STENCIL_SIZE	105
-#define GLUT_WINDOW_DEPTH_SIZE		106
-#define GLUT_WINDOW_RED_SIZE		107
-#define GLUT_WINDOW_GREEN_SIZE		108
-#define GLUT_WINDOW_BLUE_SIZE		109
-#define GLUT_WINDOW_ALPHA_SIZE		110
-#define GLUT_WINDOW_ACCUM_RED_SIZE	111
-#define GLUT_WINDOW_ACCUM_GREEN_SIZE	112
-#define GLUT_WINDOW_ACCUM_BLUE_SIZE	113
-#define GLUT_WINDOW_ACCUM_ALPHA_SIZE	114
-#define GLUT_WINDOW_DOUBLEBUFFER	115
-#define GLUT_WINDOW_RGBA		116
-#define GLUT_WINDOW_PARENT		117
-#define GLUT_WINDOW_NUM_CHILDREN	118
-#define GLUT_WINDOW_COLORMAP_SIZE	119
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_WINDOW_NUM_SAMPLES		120
-#define GLUT_WINDOW_STEREO		121
-#endif
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_WINDOW_CURSOR		122
-#endif
-#define GLUT_SCREEN_WIDTH		200
-#define GLUT_SCREEN_HEIGHT		201
-#define GLUT_SCREEN_WIDTH_MM		202
-#define GLUT_SCREEN_HEIGHT_MM		203
-#define GLUT_MENU_NUM_ITEMS		300
-#define GLUT_DISPLAY_MODE_POSSIBLE	400
-#define GLUT_INIT_WINDOW_X		500
-#define GLUT_INIT_WINDOW_Y		501
-#define GLUT_INIT_WINDOW_WIDTH		502
-#define GLUT_INIT_WINDOW_HEIGHT		503
-#define GLUT_INIT_DISPLAY_MODE		504
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_ELAPSED_TIME		700
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-#define GLUT_WINDOW_FORMAT_ID		123
-#endif
-
-#if (GLUT_API_VERSION >= 2)
-/* glutDeviceGet parameters. */
-#define GLUT_HAS_KEYBOARD		600
-#define GLUT_HAS_MOUSE			601
-#define GLUT_HAS_SPACEBALL		602
-#define GLUT_HAS_DIAL_AND_BUTTON_BOX	603
-#define GLUT_HAS_TABLET			604
-#define GLUT_NUM_MOUSE_BUTTONS		605
-#define GLUT_NUM_SPACEBALL_BUTTONS	606
-#define GLUT_NUM_BUTTON_BOX_BUTTONS	607
-#define GLUT_NUM_DIALS			608
-#define GLUT_NUM_TABLET_BUTTONS		609
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-#define GLUT_DEVICE_IGNORE_KEY_REPEAT   610
-#define GLUT_DEVICE_KEY_REPEAT          611
-#define GLUT_HAS_JOYSTICK		612
-#define GLUT_OWNS_JOYSTICK		613
-#define GLUT_JOYSTICK_BUTTONS		614
-#define GLUT_JOYSTICK_AXES		615
-#define GLUT_JOYSTICK_POLL_RATE		616
-#endif
-
-#if (GLUT_API_VERSION >= 3)
-/* glutLayerGet parameters. */
-#define GLUT_OVERLAY_POSSIBLE           800
-#define GLUT_LAYER_IN_USE		801
-#define GLUT_HAS_OVERLAY		802
-#define GLUT_TRANSPARENT_INDEX		803
-#define GLUT_NORMAL_DAMAGED		804
-#define GLUT_OVERLAY_DAMAGED		805
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-/* glutVideoResizeGet parameters. */
-#define GLUT_VIDEO_RESIZE_POSSIBLE	900
-#define GLUT_VIDEO_RESIZE_IN_USE	901
-#define GLUT_VIDEO_RESIZE_X_DELTA	902
-#define GLUT_VIDEO_RESIZE_Y_DELTA	903
-#define GLUT_VIDEO_RESIZE_WIDTH_DELTA	904
-#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA	905
-#define GLUT_VIDEO_RESIZE_X		906
-#define GLUT_VIDEO_RESIZE_Y		907
-#define GLUT_VIDEO_RESIZE_WIDTH		908
-#define GLUT_VIDEO_RESIZE_HEIGHT	909
-#endif
-
-/* glutUseLayer parameters. */
-#define GLUT_NORMAL			0
-#define GLUT_OVERLAY			1
-
-/* glutGetModifiers return mask. */
-#define GLUT_ACTIVE_SHIFT               1
-#define GLUT_ACTIVE_CTRL                2
-#define GLUT_ACTIVE_ALT                 4
-
-/* glutSetCursor parameters. */
-/* Basic arrows. */
-#define GLUT_CURSOR_RIGHT_ARROW		0
-#define GLUT_CURSOR_LEFT_ARROW		1
-/* Symbolic cursor shapes. */
-#define GLUT_CURSOR_INFO		2
-#define GLUT_CURSOR_DESTROY		3
-#define GLUT_CURSOR_HELP		4
-#define GLUT_CURSOR_CYCLE		5
-#define GLUT_CURSOR_SPRAY		6
-#define GLUT_CURSOR_WAIT		7
-#define GLUT_CURSOR_TEXT		8
-#define GLUT_CURSOR_CROSSHAIR		9
-/* Directional cursors. */
-#define GLUT_CURSOR_UP_DOWN		10
-#define GLUT_CURSOR_LEFT_RIGHT		11
-/* Sizing cursors. */
-#define GLUT_CURSOR_TOP_SIDE		12
-#define GLUT_CURSOR_BOTTOM_SIDE		13
-#define GLUT_CURSOR_LEFT_SIDE		14
-#define GLUT_CURSOR_RIGHT_SIDE		15
-#define GLUT_CURSOR_TOP_LEFT_CORNER	16
-#define GLUT_CURSOR_TOP_RIGHT_CORNER	17
-#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER	18
-#define GLUT_CURSOR_BOTTOM_LEFT_CORNER	19
-/* Inherit from parent window. */
-#define GLUT_CURSOR_INHERIT		100
-/* Blank cursor. */
-#define GLUT_CURSOR_NONE		101
-/* Fullscreen crosshair (if available). */
-#define GLUT_CURSOR_FULL_CROSSHAIR	102
-#endif
-
-/* GLUT initialization sub-API. */
-extern void APIENTRY glutInit(int *argcp, char **argv);
-extern void APIENTRY glutInitDisplayMode(unsigned int mode);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern void APIENTRY glutInitDisplayString(const char *string);
-#endif
-extern void APIENTRY glutInitWindowPosition(int x, int y);
-extern void APIENTRY glutInitWindowSize(int width, int height);
-extern void APIENTRY glutMainLoop(void);
-
-/* GLUT window sub-API. */
-extern int APIENTRY glutCreateWindow(const char *title);
-extern int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
-extern void APIENTRY glutDestroyWindow(int win);
-extern void APIENTRY glutPostRedisplay(void);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
-extern void APIENTRY glutPostWindowRedisplay(int win);
-#endif
-extern void APIENTRY glutSwapBuffers(void);
-extern int APIENTRY glutGetWindow(void);
-extern void APIENTRY glutSetWindow(int win);
-extern void APIENTRY glutSetWindowTitle(const char *title);
-extern void APIENTRY glutSetIconTitle(const char *title);
-extern void APIENTRY glutPositionWindow(int x, int y);
-extern void APIENTRY glutReshapeWindow(int width, int height);
-extern void APIENTRY glutPopWindow(void);
-extern void APIENTRY glutPushWindow(void);
-extern void APIENTRY glutIconifyWindow(void);
-extern void APIENTRY glutShowWindow(void);
-extern void APIENTRY glutHideWindow(void);
-#if (GLUT_API_VERSION >= 3)
-extern void APIENTRY glutFullScreen(void);
-extern void APIENTRY glutSetCursor(int cursor);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern void APIENTRY glutWarpPointer(int x, int y);
-#if (GLUT_MACOSX_IMPLEMENTATION >= 1)
-/* surface texturing API Mac OS X specific
-*  Note:
-*	glutSurfaceTexture has been deprecated, use GL_EXT_framebuffer_object
-*/
-#ifdef MAC_OS_X_VERSION_10_5
-extern void APIENTRY glutSurfaceTexture (GLenum target, GLenum internalformat, int surfacewin); AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
-#else
-extern void APIENTRY glutSurfaceTexture (GLenum target, GLenum internalformat, int surfacewin);
-#endif
-#endif
-#if (GLUT_MACOSX_IMPLEMENTATION >= 2)
-/* Mac OS X specific API */
-extern void APIENTRY glutWMCloseFunc(void (*func)(void));
-extern void APIENTRY glutCheckLoop(void);
-#endif
-#endif
-
-/* GLUT overlay sub-API. */
-extern void APIENTRY glutEstablishOverlay(void);
-extern void APIENTRY glutRemoveOverlay(void);
-extern void APIENTRY glutUseLayer(GLenum layer);
-extern void APIENTRY glutPostOverlayRedisplay(void);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
-extern void APIENTRY glutPostWindowOverlayRedisplay(int win);
-#endif
-extern void APIENTRY glutShowOverlay(void);
-extern void APIENTRY glutHideOverlay(void);
-#endif
-
-/* GLUT menu sub-API. */
-extern int APIENTRY glutCreateMenu(void (*)(int));
-extern void APIENTRY glutDestroyMenu(int menu);
-extern int APIENTRY glutGetMenu(void);
-extern void APIENTRY glutSetMenu(int menu);
-extern void APIENTRY glutAddMenuEntry(const char *label, int value);
-extern void APIENTRY glutAddSubMenu(const char *label, int submenu);
-extern void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
-extern void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
-extern void APIENTRY glutRemoveMenuItem(int item);
-extern void APIENTRY glutAttachMenu(int button);
-extern void APIENTRY glutDetachMenu(int button);
-
-/* GLUT window callback sub-API. */
-extern void APIENTRY glutDisplayFunc(void (*func)(void));
-extern void APIENTRY glutReshapeFunc(void (*func)(int width, int height));
-extern void APIENTRY glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
-extern void APIENTRY glutMouseFunc(void (*func)(int button, int state, int x, int y));
-extern void APIENTRY glutMotionFunc(void (*func)(int x, int y));
-extern void APIENTRY glutPassiveMotionFunc(void (*func)(int x, int y));
-extern void APIENTRY glutEntryFunc(void (*func)(int state));
-extern void APIENTRY glutVisibilityFunc(void (*func)(int state));
-extern void APIENTRY glutIdleFunc(void (*func)(void));
-extern void APIENTRY glutTimerFunc(unsigned int millis, void (*func)(int value), int value);
-extern void APIENTRY glutMenuStateFunc(void (*func)(int state));
-#if (GLUT_API_VERSION >= 2)
-extern void APIENTRY glutSpecialFunc(void (*func)(int key, int x, int y));
-extern void APIENTRY glutSpaceballMotionFunc(void (*func)(int x, int y, int z));
-extern void APIENTRY glutSpaceballRotateFunc(void (*func)(int x, int y, int z));
-extern void APIENTRY glutSpaceballButtonFunc(void (*func)(int button, int state));
-extern void APIENTRY glutButtonBoxFunc(void (*func)(int button, int state));
-extern void APIENTRY glutDialsFunc(void (*func)(int dial, int value));
-extern void APIENTRY glutTabletMotionFunc(void (*func)(int x, int y));
-extern void APIENTRY glutTabletButtonFunc(void (*func)(int button, int state, int x, int y));
-#if (GLUT_API_VERSION >= 3)
-extern void APIENTRY glutMenuStatusFunc(void (*func)(int status, int x, int y));
-extern void APIENTRY glutOverlayDisplayFunc(void (*func)(void));
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern void APIENTRY glutWindowStatusFunc(void (*func)(int state));
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-extern void APIENTRY glutKeyboardUpFunc(void (*func)(unsigned char key, int x, int y));
-extern void APIENTRY glutSpecialUpFunc(void (*func)(int key, int x, int y));
-extern void APIENTRY glutJoystickFunc(void (*func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
-#endif
-#endif
-#endif
-
-/* GLUT color index sub-API. */
-extern void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
-extern GLfloat APIENTRY glutGetColor(int ndx, int component);
-extern void APIENTRY glutCopyColormap(int win);
-
-/* GLUT state retrieval sub-API. */
-extern int APIENTRY glutGet(GLenum type);
-extern int APIENTRY glutDeviceGet(GLenum type);
-#if (GLUT_API_VERSION >= 2)
-/* GLUT extension support sub-API */
-extern int APIENTRY glutExtensionSupported(const char *name);
-#endif
-#if (GLUT_API_VERSION >= 3)
-extern int APIENTRY glutGetModifiers(void);
-extern int APIENTRY glutLayerGet(GLenum type);
-#endif
-#if (GLUT_API_VERSION >= 5)
-extern void * APIENTRY glutGetProcAddress(const char *procName);
-#endif
-
-/* GLUT font sub-API */
-extern void APIENTRY glutBitmapCharacter(void *font, int character);
-extern int APIENTRY glutBitmapWidth(void *font, int character);
-extern void APIENTRY glutStrokeCharacter(void *font, int character);
-extern int APIENTRY glutStrokeWidth(void *font, int character);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern int APIENTRY glutBitmapLength(void *font, const unsigned char *string);
-extern int APIENTRY glutStrokeLength(void *font, const unsigned char *string);
-#endif
-
-/* GLUT pre-built models sub-API */
-extern void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
-extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
-extern void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
-extern void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
-extern void APIENTRY glutWireCube(GLdouble size);
-extern void APIENTRY glutSolidCube(GLdouble size);
-extern void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
-extern void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
-extern void APIENTRY glutWireDodecahedron(void);
-extern void APIENTRY glutSolidDodecahedron(void);
-extern void APIENTRY glutWireTeapot(GLdouble size);
-extern void APIENTRY glutSolidTeapot(GLdouble size);
-extern void APIENTRY glutWireOctahedron(void);
-extern void APIENTRY glutSolidOctahedron(void);
-extern void APIENTRY glutWireTetrahedron(void);
-extern void APIENTRY glutSolidTetrahedron(void);
-extern void APIENTRY glutWireIcosahedron(void);
-extern void APIENTRY glutSolidIcosahedron(void);
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-/* GLUT video resize sub-API. */
-extern int APIENTRY glutVideoResizeGet(GLenum param);
-extern void APIENTRY glutSetupVideoResizing(void);
-extern void APIENTRY glutStopVideoResizing(void);
-extern void APIENTRY glutVideoResize(int x, int y, int width, int height);
-extern void APIENTRY glutVideoPan(int x, int y, int width, int height);
-
-/* GLUT debugging sub-API. */
-extern void APIENTRY glutReportErrors(void);
-#endif
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-/* GLUT device control sub-API. */
-/* glutSetKeyRepeat modes. */
-#define GLUT_KEY_REPEAT_OFF		0
-#define GLUT_KEY_REPEAT_ON		1
-#define GLUT_KEY_REPEAT_DEFAULT		2
-
-/* Joystick button masks. */
-#define GLUT_JOYSTICK_BUTTON_A		1
-#define GLUT_JOYSTICK_BUTTON_B		2
-#define GLUT_JOYSTICK_BUTTON_C		4
-#define GLUT_JOYSTICK_BUTTON_D		8
-
-extern void APIENTRY glutIgnoreKeyRepeat(int ignore);
-extern void APIENTRY glutSetKeyRepeat(int repeatMode);
-extern void APIENTRY glutForceJoystickFunc(void);
-
-/* GLUT game mode sub-API. */
-/* glutGameModeGet. */
-#define GLUT_GAME_MODE_ACTIVE           0
-#define GLUT_GAME_MODE_POSSIBLE         1
-#define GLUT_GAME_MODE_WIDTH            2
-#define GLUT_GAME_MODE_HEIGHT           3
-#define GLUT_GAME_MODE_PIXEL_DEPTH      4
-#define GLUT_GAME_MODE_REFRESH_RATE     5
-#define GLUT_GAME_MODE_DISPLAY_CHANGED  6
-
-extern void APIENTRY glutGameModeString(const char *string);
-extern int APIENTRY glutEnterGameMode(void);
-extern void APIENTRY glutLeaveGameMode(void);
-extern int APIENTRY glutGameModeGet(GLenum mode);
-#endif
-
-#ifdef __cplusplus
-}
-
-#endif
-
-#ifdef GLUT_APIENTRY_DEFINED
-# undef GLUT_APIENTRY_DEFINED
-# undef APIENTRY
-#endif
-
-#ifdef GLUT_WINGDIAPI_DEFINED
-# undef GLUT_WINGDIAPI_DEFINED
-# undef WINGDIAPI
-#endif
-
-#endif                  /* __glut_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glutbitmap.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#ifndef __glutbitmap_h__
-#define __glutbitmap_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#include "glut.h"
-
-typedef struct {
-  const GLsizei width;
-  const GLsizei height;
-  const GLfloat xorig;
-  const GLfloat yorig;
-  const GLfloat advance;
-  const GLubyte *bitmap;
-} BitmapCharRec, *BitmapCharPtr;
-
-typedef struct {
-  const char *name;
-  const int num_chars;
-  const int first;
-  const BitmapCharRec * const *ch;
-} BitmapFontRec, *BitmapFontPtr;
-
-typedef void *GLUTbitmapFont;
-
-#endif /* __glutbitmap_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glutf90.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-#ifndef __glutf90_h__
-#define __glutf90_h__
-
-/* Copyright (c) Mark J. Kilgard & Willam F. Mitchell, 1998. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-/* This header provides the binding interface for William Mitchell's
-   f90gl Fortran 90 GLUT binding.  Other GLUT language bindings
-   can and should use this interace. */
-
-/* I appreciate the guidance from William Mitchell
-   (mitchell@cam.nist.gov) in developing this friend interface
-   for use by the f90gl package.  See ../../README.fortran */
-
-#include <GLUT/glut.h>
-
-#ifndef GLUTCALLBACK
-	#define GLUTCALLBACK
-#endif
-#ifndef APIENTRY
-	#define APIENTRY
-#endif
-
-/* Which callback enumerants for the __glutSetFCB/__glutGetFCB routines. */
-/* NOTE These values are part of a binary interface for the f90gl Fortran
-   90 binding and so must NOT changes (additions are allowed). */
-
-/* GLUTwindow callbacks. */
-#define GLUT_FCB_DISPLAY         0    /* GLUTdisplayFCB */
-#define GLUT_FCB_RESHAPE         1    /* GLUTreshapeFCB */
-#define GLUT_FCB_MOUSE           2    /* GLUTmouseFCB */
-#define GLUT_FCB_MOTION          3    /* GLUTmotionFCB */
-#define GLUT_FCB_PASSIVE         4    /* GLUTpassiveFCB */
-#define GLUT_FCB_ENTRY           5    /* GLUTentryFCB */
-#define GLUT_FCB_KEYBOARD        6    /* GLUTkeyboardFCB */
-#define GLUT_FCB_KEYBOARD_UP     7    /* GLUTkeyboardFCB */
-#define GLUT_FCB_WINDOW_STATUS   8    /* GLUTwindowStatusFCB */
-#define GLUT_FCB_VISIBILITY      9    /* GLUTvisibilityFCB */
-#define GLUT_FCB_SPECIAL         10   /* GLUTspecialFCB */
-#define GLUT_FCB_SPECIAL_UP      11   /* GLUTspecialFCB */
-#define GLUT_FCB_BUTTON_BOX      12   /* GLUTbuttonBoxFCB */
-#define GLUT_FCB_DIALS           13   /* GLUTdialsFCB */
-#define GLUT_FCB_SPACE_MOTION    14   /* GLUTspaceMotionFCB */
-#define GLUT_FCB_SPACE_ROTATE    15   /* GLUTspaceRotateFCB */
-#define GLUT_FCB_SPACE_BUTTON    16   /* GLUTspaceButtonFCB */
-#define GLUT_FCB_TABLET_MOTION   17   /* GLUTtabletMotionFCB */
-#define GLUT_FCB_TABLET_BUTTON   18   /* GLUTtabletButtonFCB */
-#define GLUT_FCB_JOYSTICK        19   /* GLUTjoystickFCB */
-#define GLUT_FCB_WMCLOSE         20   /* GLUTwmcloseFCB */
-/* Non-GLUTwindow callbacks. */
-#define GLUT_FCB_OVERLAY_DISPLAY 100  /* GLUTdisplayFCB */
-#define GLUT_FCB_SELECT          101  /* GLUTselectFCB */
-#define GLUT_FCB_TIMER           102  /* GLUTtimerFCB */
-
-/* GLUT Fortran callback function types. */
-typedef void (GLUTCALLBACK *GLUTdisplayFCB) (void);
-typedef void (GLUTCALLBACK *GLUTwmcloseFCB) (void);
-typedef void (GLUTCALLBACK *GLUTreshapeFCB) (int *, int *);
-/* NOTE the pressed key is int, not unsigned char for Fortran! */
-typedef void (GLUTCALLBACK *GLUTkeyboardFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTmouseFCB) (int *, int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTmotionFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTpassiveFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTentryFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTwindowStatusFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTvisibilityFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTspecialFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTbuttonBoxFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTdialsFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceMotionFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceRotateFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceButtonFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTtabletMotionFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTtabletButtonFCB) (int *, int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTjoystickFCB) (unsigned int *buttonMask, int *x, int *y, int *z);
-
-typedef void (GLUTCALLBACK *GLUTselectFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTtimerFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTmenuStateFCB) (int *);  /* DEPRICATED. */
-typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTidleFCB) (void);
-
-/* Functions that set and return Fortran callback functions. */
-extern void* APIENTRY __glutGetFCB(int which);
-extern void APIENTRY __glutSetFCB(int which, void *func);
-
-#endif  /* __glutf90_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/glutstroke.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#ifndef __glutstroke_h__
-#define __glutstroke_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#if defined(_WIN32)
-#pragma warning (disable:4244)  /* disable bogus conversion warnings */
-#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-#endif
-
-typedef struct {
-  float x;
-  float y;
-} CoordRec, *CoordPtr;
-
-typedef struct {
-  int num_coords;
-  const CoordRec *coord;
-} StrokeRec, *StrokePtr;
-
-typedef struct {
-  int num_strokes;
-  const StrokeRec *stroke;
-  float center;
-  float right;
-} StrokeCharRec, *StrokeCharPtr;
-
-typedef struct {
-  const char *name;
-  int num_chars;
-  const StrokeCharRec *ch;
-  float top;
-  float bottom;
-} StrokeFontRec, *StrokeFontPtr;
-
-typedef void *GLUTstrokeFont;
-
-#endif /* __glutstroke_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/gutil.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-
-/*
- * gutil.h
- *
- * FUNCTION:
- * Provide utilities that allow rotation to occur 
- * around any axis.
- * 
- * HISTORY:
- * created by Linas Vepstas  1990
- * added single & double precision, June 1991, Linas Vepstas
- */
-
-#ifndef __GUTIL_H__
-#define __GUTIL_H__
-
-#ifdef __GUTIL_DOUBLE
-#define gutDouble double
-#else
-#define gutDouble float  
-#endif
-
-
-#ifdef _NO_PROTO		/* NO ANSI C PROTOTYPING */
-
-/* Rotation Utilities */
-extern void rot_axis_f ();
-extern void rot_about_axis_f ();
-extern void rot_omega_f ();
-extern void urot_axis_f ();
-extern void urot_about_axis_f ();
-extern void urot_omega_f ();
-
-/* double-precision versions */
-extern void rot_axis_d ();
-extern void rot_about_axis_d ();
-extern void rot_omega_d ();
-extern void urot_axis_d ();
-extern void urot_about_axis_d ();
-extern void urot_omega_d ();
-
-/* viewpoint functions */
-extern void uview_direction_d ();
-extern void uview_direction_f ();
-extern void uviewpoint_d ();
-extern void uviewpoint_f ();
-
-#else /* _NO_PROTO */		/* ANSI C PROTOTYPING */
-
-/* Rotation Utilities */
-extern void rot_axis_f (float omega, float axis[3]);
-extern void rot_about_axis_f (float angle, float axis[3]);
-extern void rot_omega_f (float axis[3]);
-extern void urot_axis_f (float m[4][4], float omega, float axis[3]);
-extern void urot_about_axis_f (float m[4][4], float angle, float axis[3]);
-extern void urot_omega_f (float m[4][4], float axis[3]);
-
-/* double-precision versions */
-extern void rot_axis_d (double omega, double axis[3]);
-extern void rot_about_axis_d (double angle, double axis[3]);
-extern void rot_omega_d (double axis[3]);
-extern void urot_axis_d (double m[4][4], double omega, double axis[3]);
-extern void urot_about_axis_d (double m[4][4], double angle, double axis[3]);
-extern void urot_omega_d (double m[4][4], double axis[3]);
-
-/* viewpoint functions */
-extern void uview_direction_d (double m[4][4],		/* returned */
-                        double v21[3],		/* input */
-                        double up[3]);		/* input */
-
-extern void uview_direction_f (float m[4][4],		/* returned */
-                        float v21[3],		/* input */
-                        float up[3]);		/* input */
-
-extern void uviewpoint_d (double m[4][4],		/* returned */
-                   double v1[3],		/* input */
-                   double v2[3],		/* input */
-                   double up[3]);		/* input */
-
-extern void uviewpoint_f (float m[4][4],		/* returned */
-                   float v1[3],		/* input */
-                   float v2[3],		/* input */
-                   float up[3]);		/* input */
-
-#endif /* _NO_PROTO */
-
-#endif /* _GUTIL_H__ */
-
-/* ------------------- end of file ---------------------- */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/intersect.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +0,0 @@
-/*
- * FUNCTION:
- * This file contains a number of utilities useful to 3D graphics in
- * general, and to the generation of tubing and extrusions in particular
- * 
- * HISTORY:
- * Written by Linas Vepstas, August 1991
- * Updated to correctly handle degenerate cases, Linas,  February 1993 
- */
-
-#include <math.h>
-#include "port.h"
-#include "vvector.h"
-
-#define BACKWARDS_INTERSECT (2)
-
-/* ========================================================== */
-/*
- * the Degenerate_Tolerance token represents the greatest amount by
- * which different scales in a graphics environment can differ before
- * they should be considered "degenerate".   That is, when one vector is
- * a million times longer than another, changces are that the second will
- * be less than a pixel int, and therefore was probably meant to be
- * degenerate (by the CAD package, etc.)  But what should this tolerance
- * be?  At least 1 in onethousand (since screen sizes are 1K pixels), but
- * les than 1 in 4 million (since this is the limit of single-precision
- * floating point accuracy).  Of course, if double precision were used,
- * then the tolerance could be increased.
- * 
- * Potentially, this naive assumption could cause problems if the CAD
- * package attempts to zoom in on small details, and turns out, certain
- * points should not hvae been degenerate.  The problem presented here
- * is that the tolerance could run out before single-precision ran
- * out, and so the CAD packages would perceive this as a "bug".
- * One alternative is to fiddle around & try to tighten the tolerance.
- * However, the right alternative is to code the graphics pipeline in
- * double-precision (and tighten the tolerance).
- *
- * By the way, note that Degernate Tolerance is a "dimensionless"
- * quantitiy -- it has no units -- it does not measure feet, inches,
- * millimeters or pixels.  It is used only in the computations of ratios
- * and relative lengths.
- */
-
-/* 
- * Right now, the tolerance is set to 2 parts in a million, which
- * corresponds to a 19-bit distinction of mantissas. Note that
- * single-precsion numbers have 24 bit mantissas.
- */
-
-#define DEGENERATE_TOLERANCE   (0.000002)
-
-/* ========================================================== */
-/* 
- * The macro and subroutine INTERSECT are designed to compute the
- * intersection of a line (defined by the points v1 and v2) and a plane
- * (defined as plane which is normal to the vector n, and contains the
- * point p).  Both return the point sect, which is the point of
- * interesection.
- *
- * This MACRO attemps to be fairly robust by checking for a divide by
- * zero.
- */
-
-/* ========================================================== */
-/*
- * HACK ALERT
- * The intersection parameter t has the nice property that if t>1,
- * then the intersection is "in front of" p1, and if t<0, then the
- * intersection is "behind" p2. Unfortunately, as the intersecting plane
- * and the line become parallel, t wraps through infinity -- i.e. t can
- * become so large that t becomes "greater than infinity" and comes back 
- * as a negative number (i.e. winding number hopped by one unit).  We 
- * have no way of detecting this situation without adding gazzillions 
- * of lines of code of topological algebra to detect the winding number;
- * and this would be incredibly difficult, and ruin performance.
- * 
- * Thus, we've installed a cheap hack for use by the "cut style" drawing
- * routines. If t proves to be a large negative number (more negative
- * than -5), then we assume that t was positive and wound through
- * infinity.  This makes most cuts look good, without introducing bogus
- * cuts at infinity.
- */
-/* ========================================================== */
-
-#define INTERSECT(sect,p,n,v1,v2)			\
-{							\
-   gleDouble deno, numer, t, omt;			\
-							\
-   deno = (v1[0] - v2[0]) * n[0];			\
-   deno += (v1[1] - v2[1]) * n[1];			\
-   deno += (v1[2] - v2[2]) * n[2];			\
-   							\
-   if (deno == 0.0) {					\
-      VEC_COPY (n, v1);					\
-      /* printf ("Intersect: Warning: line is coplanar with plane \n"); */ \
-   } else {						\
-							\
-      numer = (p[0] - v2[0]) * n[0];			\
-      numer += (p[1] - v2[1]) * n[1];			\
-      numer += (p[2] - v2[2]) * n[2];			\
-							\
-      t = numer / deno;					\
-      omt = 1.0 - t;					\
-							\
-      sect[0] = t * v1[0] + omt * v2[0];		\
-      sect[1] = t * v1[1] + omt * v2[1];		\
-      sect[2] = t * v1[2] + omt * v2[2];		\
-   }							\
-}
-
-/* ========================================================== */
-/* 
- * The macro and subroutine BISECTING_PLANE compute a normal vector that
- * describes the bisecting plane between three points (v1, v2 and v3).  
- * This bisecting plane has the following properties:
- * 1) it contains the point v2
- * 2) the angle it makes with v21 == v2 - v1 is equal to the angle it 
- *    makes with v32 == v3 - v2 
- * 3) it is perpendicular to the plane defined by v1, v2, v3.
- *
- * Having input v1, v2, and v3, it returns a unit vector n.
- *
- * In some cases, the user may specify degenerate points, and still
- * expect "reasonable" or "obvious" behaviour.  The "expected"
- * behaviour for these degenerate cases is:
- *
- * 1) if v1 == v2 == v3, then return n=0
- * 2) if v1 == v2, then return v32 (normalized).
- * 3) if v2 == v3, then return v21 (normalized).
- * 4) if v1, v2 and v3 co-linear, then return v21 (normalized).
- *
- * Mathematically, these special cases "make sense" -- we just have to
- * code around potential divide-by-zero's in the code below.
- */
-
-/* ========================================================== */
-
-#define BISECTING_PLANE(valid,n,v1,v2,v3)			\
-{								\
-   double v21[3], v32[3];					\
-   double len21, len32;						\
-   double vdot;							\
-								\
-   VEC_DIFF (v21, v2, v1);					\
-   VEC_DIFF (v32, v3, v2);					\
-								\
-   VEC_LENGTH (len21, v21);					\
-   VEC_LENGTH (len32, v32);					\
-								\
-   if (len21 <= DEGENERATE_TOLERANCE * len32) {			\
-								\
-      if (len32 == 0.0) {					\
-         /* all three points lie ontop of one-another */	\
-         VEC_ZERO (n);						\
-         valid = FALSE;						\
-      } else {							\
-         /* return a normalized copy of v32 as bisector */	\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (n, len32, v32);				\
-         valid = TRUE;						\
-      }								\
-								\
-   } else {							\
-								\
-      valid = TRUE;						\
-								\
-      if (len32 <= DEGENERATE_TOLERANCE * len21) {		\
-         /* return a normalized copy of v21 as bisector */	\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (n, len21, v21);				\
-								\
-      } else {							\
-								\
-         /* normalize v21 to be of unit length */		\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (v21, len21, v21);				\
-								\
-         /* normalize v32 to be of unit length */		\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (v32, len32, v32);				\
-								\
-         VEC_DOT_PRODUCT (vdot, v32, v21);			\
-								\
-         /* if vdot == 1 or -1, then points are colinear */	\
-         if ((vdot >= (1.0-DEGENERATE_TOLERANCE)) || 		\
-             (vdot <= (-1.0+DEGENERATE_TOLERANCE))) {		\
-            VEC_COPY (n, v21);					\
-         } else {						\
-   								\
-            /* go do the full computation */ 			\
-            n[0] = vdot * (v32[0] + v21[0]) - v32[0] - v21[0];	\
-            n[1] = vdot * (v32[1] + v21[1]) - v32[1] - v21[1];	\
-            n[2] = vdot * (v32[2] + v21[2]) - v32[2] - v21[2];	\
-								\
-            /* if above if-test's passed, 			\
-             * n should NEVER be of zero length */		\
-            VEC_NORMALIZE (n);					\
-         } 							\
-      } 							\
-   } 								\
-}
-
-/* ========================================================== */
-/*
- * The block of code below is ifdef'd out, and is here for reference
- * purposes only.  It performs the "mathematically right thing" for
- * computing a bisecting plane, but is, unfortunately, subject ot noise
- * in the presence of near degenerate points.  Since computer graphics,
- * due to sloppy coding, laziness, or correctness, is filled with
- * degenerate points, we can't really use this version.  The code above
- * is far more appropriate for graphics.
- */
-
-#ifdef MATHEMATICALLY_EXACT_GRAPHICALLY_A_KILLER
-#define BISECTING_PLANE(n,v1,v2,v3)				\
-{								\
-   double v21[3], v32[3];					\
-   double len21, len32;						\
-   double vdot;							\
-								\
-   VEC_DIFF (v21, v2, v1);					\
-   VEC_DIFF (v32, v3, v2);					\
-								\
-   VEC_LENGTH (len21, v21);					\
-   VEC_LENGTH (len32, v32);					\
-								\
-   if (len21 == 0.0) {						\
-								\
-      if (len32 == 0.0) {					\
-         /* all three points lie ontop of one-another */	\
-         VEC_ZERO (n);						\
-         valid = FALSE;						\
-      } else {							\
-         /* return a normalized copy of v32 as bisector */	\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (n, len32, v32);				\
-      }								\
-								\
-   } else {							\
-								\
-      /* normalize v21 to be of unit length */			\
-      len21 = 1.0 / len21;					\
-      VEC_SCALE (v21, len21, v21);				\
-								\
-      if (len32 == 0.0) {					\
-         /* return a normalized copy of v21 as bisector */	\
-         VEC_COPY (n, v21);					\
-      } else {							\
-								\
-         /* normalize v32 to be of unit length */		\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (v32, len32, v32);				\
-								\
-         VEC_DOT_PRODUCT (vdot, v32, v21);			\
-								\
-         /* if vdot == 1 or -1, then points are colinear */	\
-         if ((vdot == 1.0) || (vdot == -1.0)) {			\
-            VEC_COPY (n, v21);					\
-         } else {						\
-   								\
-            /* go do the full computation */ 			\
-            n[0] = vdot * (v32[0] + v21[0]) - v32[0] - v21[0];	\
-            n[1] = vdot * (v32[1] + v21[1]) - v32[1] - v21[1];	\
-            n[2] = vdot * (v32[2] + v21[2]) - v32[2] - v21[2];	\
-								\
-            /* if above if-test's passed, 			\
-             * n should NEVER be of zero length */		\
-            VEC_NORMALIZE (n);					\
-         } 							\
-      } 							\
-   } 								\
-}
-#endif
-
-/* ========================================================== */
-/*
- * This macro computes the plane perpendicular to the the plane
- * defined by three points, and whose normal vector is givven as the
- * difference between the two vectors ...
- * 
- * (See way below for the "math" model if you want to understand this.
- * The comments about relative errors above apply here.)
- */
-
-#define CUTTING_PLANE(valid,n,v1,v2,v3)				\
-{								\
-   double v21[3], v32[3];					\
-   double len21, len32;						\
-   double lendiff;						\
-								\
-   VEC_DIFF (v21, v2, v1);					\
-   VEC_DIFF (v32, v3, v2);					\
-								\
-   VEC_LENGTH (len21, v21);					\
-   VEC_LENGTH (len32, v32);					\
-								\
-   if (len21 <= DEGENERATE_TOLERANCE * len32) {			\
-								\
-      if (len32 == 0.0) {					\
-         /* all three points lie ontop of one-another */	\
-         VEC_ZERO (n);						\
-         valid = FALSE;						\
-      } else {							\
-         /* return a normalized copy of v32 as cut-vector */	\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (n, len32, v32);				\
-         valid = TRUE;						\
-      }								\
-								\
-   } else {							\
-								\
-      valid = TRUE;						\
-								\
-      if (len32 <= DEGENERATE_TOLERANCE * len21) {		\
-         /* return a normalized copy of v21 as cut vector */	\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (n, len21, v21);				\
-      } else {							\
-								\
-         /* normalize v21 to be of unit length */		\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (v21, len21, v21);				\
-								\
-         /* normalize v32 to be of unit length */		\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (v32, len32, v32);				\
-								\
-         VEC_DIFF (n, v21, v32);				\
-         VEC_LENGTH (lendiff, n);				\
-								\
-         /* if the perp vector is very small, then the two 	\
-          * vectors are darn near collinear, and the cut 	\
-          * vector is probably poorly defined. */		\
-         if (lendiff < DEGENERATE_TOLERANCE) {			\
-            VEC_ZERO (n);					\
-            valid = FALSE;					\
-         } else {						\
-            lendiff = 1.0 / lendiff;				\
-            VEC_SCALE (n, lendiff, n);				\
-         } 							\
-      } 							\
-   } 								\
-}
-
-/* ========================================================== */
-
-#ifdef MATHEMATICALLY_EXACT_GRAPHICALLY_A_KILLER
-#define CUTTING_PLANE(n,v1,v2,v3)		\
-{						\
-   double v21[3], v32[3];			\
-						\
-   VEC_DIFF (v21, v2, v1);			\
-   VEC_DIFF (v32, v3, v2);			\
-						\
-   VEC_NORMALIZE (v21);				\
-   VEC_NORMALIZE (v32);				\
-						\
-   VEC_DIFF (n, v21, v32);			\
-   VEC_NORMALIZE (n);				\
-}
-#endif
-
-
-/* ============================================================ */
-/* This macro is used in several places to cycle through a series of
- * points to find the next non-degenerate point in a series */
-
-#define FIND_NON_DEGENERATE_POINT(inext,npoints,len,diff,point_array)   \
-{                                                                       \
-   gleDouble slen;							\
-   gleDouble summa[3];							\
-   									\
-   do {                                                                 \
-      /* get distance to next point */                                  \
-      VEC_DIFF (diff, point_array[inext+1], point_array[inext]);        \
-      VEC_LENGTH (len, diff);                                           \
-      VEC_SUM (summa, point_array[inext+1], point_array[inext]);        \
-      VEC_LENGTH (slen, summa);                                         \
-      slen *= DEGENERATE_TOLERANCE;					\
-      inext ++;                                                         \
-   } while ((len <= slen) && (inext < npoints-1));                      \
-}
-
-/* ========================================================== */
-
-extern int bisecting_plane (gleDouble n[3],    /* returned */
-                      gleDouble v1[3],  /* input */
-                      gleDouble v2[3],  /* input */
-                      gleDouble v3[3]);  /* input */
-
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/port.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,298 +0,0 @@
-
-/*
- * port.h 
- *
- * FUNCTION:
- * This file contains defines for porting the tubing toolkit from GL to
- * OpenGL to some callback scheme.
- *
- * HISTORY:
- * Created by Linas Vepstas --  February 1993
- * Added auto texture coord generation hacks, Linas April 1994 
- */
-
-#ifndef __GLE_PORT_H__
-#define __GLE_PORT_H__
-
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-/* ====================================================== */
-/* Some compilers can't handle multiply-subscripted array's */
-
-#ifdef FUNKY_C
-typedef gleDouble gleVector;
-#define AVAL(arr,n,i,j)  arr(6*n+3*i+j)
-#define VVAL(arr,n,i)  arr(3*n+i)
-
-#else  /* FUNKY_C */
-typedef double gleVector[3];
-typedef double glePoint[2];
-#define AVAL(arr,n,i,j)  arr[n][i][j]
-#define VVAL(arr,n,i)  arr[n][i];
-
-#endif /* FUNKY_C */
-
-/* ====================================================== */
-/* These are used to convey info about topography to the 
- * texture mapping routines */
-
-#define FRONT 		1
-#define BACK 		2
-#define FRONT_CAP 	3
-#define BACK_CAP	4
-#define FILLET		5
-
-/* ====================================================== */
-
-#define __GLE_DOUBLE
-
-/* ====================================================== */
-
-#ifdef __GLE_DOUBLE
-#ifndef gleDouble
-    #define gleDouble 		double
-#endif
-#define urot_axis(a,b,c) 	urot_axis_d(a,b,c)
-#define uview_direction(a,b,c) 	uview_direction_d(a,b,c)
-#define uviewpoint(a,b,c,d) 	uviewpoint_d(a,b,c,d)
-#define MULTMATRIX(m)		MULTMATRIX_D(m)
-#define LOADMATRIX(m)		LOADMATRIX_D(m)
-#define V3F(x,j,id)		V3F_D(x,j,id)
-#define N3F(x)			N3F_D(x)
-#define T2F(x,y)		T2F_D(x,y)
-#else 
-#define gleDouble 		float
-#define urot_axis(a,b,c) 	urot_axis_f(a,b,c)
-#define uview_direction(a,b,c) 	uview_direction_f(a,b,c)
-#define uviewpoint(a,b,c,d) 	uviewpoint_f(a,b,c,d)
-#define MULTMATRIX(m)		MULTMATRIX_F(m)
-#define LOADMATRIX(m)		LOADMATRIX_F(m)
-#define V3F(x,j,id)		V3F_F(x,j,id)
-#define N3F(x)			N3F_F(x)
-#define T2F(x,y)		T2F_F(x,y)
-#endif 
-
-/* ====================================================== */
-
-#if (defined DEBUG_GL_32 || DEBUG_OPENGL_10)
-#undef GL_32
-#undef OPENGL_10
-
-#define BGNTMESH(i,len)	printf ("bgntmesh() \n");
-#define ENDTMESH()      printf ("endtmesh() \n");
-#define BGNPOLYGON()	printf ("bgnpolygon() \n");
-#define ENDPOLYGON()	printf ("endpolygon() \n");
-#define V3F_F(x,j,id)	printf ("v3f(x)		%f %f %f \n", x[0], x[1], x[2]);
-#define V3F_D(x,j,id)	printf ("v3d(x) 	%f %f %f \n", x[0], x[1], x[2]);
-#define	N3F_F(x)	printf ("n3f(x) 	%f %f %f \n", x[0], x[1], x[2]);
-#define	N3F_D(x)	printf ("n3d(x)		%f %f %f \n", x[0], x[1], x[2]);
-#define	C3F(x)		printf ("c3f(x) 	%f %f %f \n", x[0], x[1], x[2]);
-
-#define	POPMATRIX()	printf ("popmatrix () \n");
-#define	PUSHMATRIX()	printf ("pushmatrix() \n");
-#define	MULTMATRIX_F(x)	MULTMATRIX_D(x)
-#define	LOADMATRIX_F(x)	LOADMATRIX_D(x)
-
-
-#define LOADMATRIX_D(x) {				\
-   int i, j; 						\
-   printf ("loadmatrix (x) \n");			\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         printf ( "%f ", x[i][j]);			\
-      }							\
-      printf (" \n");					\
-   }							\
-}
-
-#define MULTMATRIX_D(x) {				\
-   int i, j; 						\
-   printf ("multmatrix (x) \n");			\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         printf ( "%f ", x[i][j]);			\
-      }							\
-      printf (" \n");					\
-   }							\
-}
-
-#define __IS_LIGHTING_ON  (1)
-
-#endif
-
-/* ====================================================== */
-
-#ifdef GL_32
-
-#include <gl/gl.h>
-
-#define BGNTMESH(i,len)	bgntmesh()
-#define ENDTMESH()	endtmesh()
-#define BGNPOLYGON()	bgnpolygon()
-#define ENDPOLYGON()	endpolygon()
-#define V3F_F(x,j,id)	v3f(x)
-#define V3F_D(x,j,id)	v3d(x)
-#define	N3F_F(x)	n3f(x)
-#define	T2F_F(x,y)
-#define	T2F_D(x,y)
-#define	C3F(x)		c3f(x)
-
-#define	POPMATRIX()	popmatrix ()
-#define	PUSHMATRIX()	pushmatrix()
-#define	MULTMATRIX_F(x)	multmatrix (x)
-#define	LOADMATRIX_F(x)	loadmatrix (x)
-
-#define	N3F_D(x) {					\
-   float nnn[3];					\
-   nnn[0] = (float) x[0]; 				\
-   nnn[1] = (float) x[1]; 				\
-   nnn[2] = (float) x[2]; 				\
-   n3f (nnn);						\
-}
-
-#define LOADMATRIX_D(x) {				\
-   int i, j; 						\
-   float mmm[4][4];					\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         mmm[i][j] = (float) x[i][j];			\
-      }							\
-   }							\
-   loadmatrix(mmm);					\
-}
-
-#define MULTMATRIX_D(x) {				\
-   int i, j; 						\
-   float mmm[4][4];					\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         mmm[i][j] = (float) x[i][j];			\
-      }							\
-   }							\
-   multmatrix(mmm);					\
-}
-
-/* #define __IS_LIGHTING_ON  (MSINGLE == getmmode()) */
-#define __IS_LIGHTING_ON  (extrusion_join_style & TUBE_LIGHTING_ON)
-
-#endif /* GL_32 */
-
-/* ====================================================== */
-#ifdef OPENGL_10
-
-#if defined(_WIN32)
-#include <windows.h>
-#pragma warning (disable:4244)          /* disable bogus conversion warnings */
-#endif
-#include <OpenGL/gl.h>
-#include <OpenGL/glu.h>
-
-/*
-#define	N3F_F(x) {					\
-   float nnn[3];					\
-   nnn[0] = - (float) x[0]; 				\
-   nnn[1] = - (float) x[1]; 				\
-   nnn[2] = - (float) x[2]; 				\
-   glNormal3fv (nnn);						\
-}
-#define	N3F_D(x) {					\
-   float nnn[3];					\
-   nnn[0] = - (float) x[0]; 				\
-   nnn[1] = - (float) x[1]; 				\
-   nnn[2] = - (float) x[2]; 				\
-   glNormal3fv (nnn);						\
-}
-*/
-
-#define	C3F(x)		glColor3fv(x)
-#define	T2F_F(x,y)	glTexCoord2f(x,y)
-#define	T2F_D(x,y)	glTexCoord2d(x,y)
-
-#define	POPMATRIX()	glPopMatrix()
-#define	PUSHMATRIX()	glPushMatrix()
-
-#define	MULTMATRIX_F(x)	glMultMatrixf ((const GLfloat *)x)
-#define	LOADMATRIX_F(x)	glLoadMatrixf ((const GLfloat *)x)
-
-#define	MULTMATRIX_D(x)	glMultMatrixd ((const GLdouble *)x)
-#define	LOADMATRIX_D(x)	glLoadMatrixd ((const GLdouble *)x)
-
-#define __IS_LIGHTING_ON  (glIsEnabled(GL_LIGHTING))
-
-/* ====================================================== */
-#ifdef AUTO_TEXTURE
-
-#define BGNTMESH(i,len) { 					\
-	if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))(i,len);\
-	glBegin (GL_TRIANGLE_STRIP); 			\
-}
-
-#define BGNPOLYGON() { 					\
-	if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))();\
-	glBegin (GL_POLYGON);				\
-}
-
-#define N3F_F(x) { 					\
-	if(_gle_gc -> n3f_gen_texture) (*(_gle_gc -> n3f_gen_texture))(x); \
-	glNormal3fv(x); 				\
-}
-
-#define N3F_D(x) { 					\
-	if(_gle_gc -> n3d_gen_texture) (*(_gle_gc -> n3d_gen_texture))(x); \
-	glNormal3dv(x); 				\
-}
-
-#define V3F_F(x,j,id) { 					\
-	if(_gle_gc -> v3f_gen_texture) (*(_gle_gc -> v3f_gen_texture))(x,j,id);\
-	glVertex3fv(x); 				\
-}
-
-#define V3F_D(x,j,id) { 					\
-	if(_gle_gc -> v3d_gen_texture) (*(_gle_gc -> v3d_gen_texture))(x,j,id); \
-	glVertex3dv(x); 				\
-}
-
-#define ENDTMESH() {					\
-	if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \
-	glEnd ();					\
-}
-
-#define ENDPOLYGON() {					\
-	if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \
-	glEnd ();					\
-}
-
-/* ====================================================== */
-#else /* AUTO_TEXTURE */
-
-#define BGNTMESH(i,len)	glBegin (GL_TRIANGLE_STRIP);
-#define BGNPOLYGON() 	glBegin (GL_POLYGON);
-
-#define	N3F_F(x)	glNormal3fv(x)
-#define	N3F_D(x)	glNormal3dv(x)
-#define V3F_F(x,j,id)	glVertex3fv(x);
-#define V3F_D(x,j,id)	glVertex3dv(x);
-
-#define ENDTMESH()	glEnd ()
-#define ENDPOLYGON()	glEnd()
-
-#endif /* AUTO_TEXTURE */
-
-#endif /* OPENGL_10 */
-
-/* ====================================================== */
-
-
-#endif /* __GLE_PORT_H__ */
-/* ================== END OF FILE ======================= */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/rot.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-
-/*
- * rot.h
- *
- * FUNCTION:
- * rotation matrix utilities
- *
- * HISTORY:
- * Linas Vepstas Aug 1990
- */
-
-/* ========================================================== */
-/* 
- * The MACROS below generate and return more traditional rotation
- * matrices -- matrices for rotations about principal axes.
- */
-/* ========================================================== */
-
-#define ROTX_CS(m,cosine,sine)		\
-{					\
-   /* rotation about the x-axis */	\
-					\
-   m[0][0] = 1.0;			\
-   m[0][1] = 0.0;			\
-   m[0][2] = 0.0;			\
-   m[0][3] = 0.0;			\
-					\
-   m[1][0] = 0.0;			\
-   m[1][1] = (cosine);			\
-   m[1][2] = (sine);			\
-   m[1][3] = 0.0;			\
-					\
-   m[2][0] = 0.0;			\
-   m[2][1] = -(sine);			\
-   m[2][2] = (cosine);			\
-   m[2][3] = 0.0;			\
-					\
-   m[3][0] = 0.0;			\
-   m[3][1] = 0.0;			\
-   m[3][2] = 0.0;			\
-   m[3][3] = 1.0;			\
-}				
-
-/* ========================================================== */
-
-#define ROTY_CS(m,cosine,sine)		\
-{					\
-   /* rotation about the y-axis */	\
-					\
-   m[0][0] = (cosine);			\
-   m[0][1] = 0.0;			\
-   m[0][2] = -(sine);			\
-   m[0][3] = 0.0;			\
-					\
-   m[1][0] = 0.0;			\
-   m[1][1] = 1.0;			\
-   m[1][2] = 0.0;			\
-   m[1][3] = 0.0;			\
-					\
-   m[2][0] = (sine);			\
-   m[2][1] = 0.0;			\
-   m[2][2] = (cosine);			\
-   m[2][3] = 0.0;			\
-					\
-   m[3][0] = 0.0;			\
-   m[3][1] = 0.0;			\
-   m[3][2] = 0.0;			\
-   m[3][3] = 1.0;			\
-}
-
-/* ========================================================== */
-
-#define ROTZ_CS(m,cosine,sine)		\
-{					\
-   /* rotation about the z-axis */	\
-					\
-   m[0][0] = (cosine);			\
-   m[0][1] = (sine);			\
-   m[0][2] = 0.0;			\
-   m[0][3] = 0.0;			\
-					\
-   m[1][0] = -(sine);			\
-   m[1][1] = (cosine);			\
-   m[1][2] = 0.0;			\
-   m[1][3] = 0.0;			\
-					\
-   m[2][0] = 0.0;			\
-   m[2][1] = 0.0;			\
-   m[2][2] = 1.0;			\
-   m[2][3] = 0.0;			\
-					\
-   m[3][0] = 0.0;			\
-   m[3][1] = 0.0;			\
-   m[3][2] = 0.0;			\
-   m[3][3] = 1.0;			\
-}
-
-/* ========================================================== */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/segment.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-
-/*
- * MODULE: segment.h
- *
- * FUNCTION:
- * Contains function prototypes for segment drawing subroutines.
- * These are used only internally, and are not to be exported to
- * the user.
- *
- * HISTORY:
- * Create by Linas Vepstas
- * Added tube.h include to define gleDouble, tad February 2002
- */
-
-/* ============================================================ */
-
-#include "tube.h"
-
-extern void draw_segment_plain (int ncp,       /* number of contour points */
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           int inext, double len);
-
-extern void draw_segment_color (int ncp,       /* number of contour points */
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_segment_edge_n (int ncp,      /* number of contour points */
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           int inext, double len);
-
-extern void draw_segment_c_and_edge_n (int ncp,   
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_segment_facet_n (int ncp,     
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           int inext, double len);
-
-extern void draw_segment_c_and_facet_n (int ncp,    
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-/* ============================================================ */
-
-extern void draw_binorm_segment_edge_n (int ncp,  
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           int inext, double len);
-
-extern void draw_binorm_segment_c_and_edge_n (int ncp,   
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_binorm_segment_facet_n (int ncp, 
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           int inext, double len);
-
-extern void draw_binorm_segment_c_and_facet_n (int ncp,    
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_angle_style_back_cap (int ncp,        /* number of contour points */
-                           gleDouble bi[3],             /* biscetor */
-                           gleDouble point_array[][3]);  /* polyline */
-
-/* -------------------------- end of file -------------------------------- */
-
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/tube.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +0,0 @@
-/* 
- * tube.h
- *
- * FUNCTION:
- * Tubing and Extrusion header file.
- * This file provides protypes and defines for the extrusion 
- * and tubing primitives.
- *
- * HISTORY:
- * Linas Vepstas 1990, 1991
- */
-
-#ifndef __TUBE_H__
-#define __TUBE_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- GLE API revision history:
- 
- GLE_API_VERSION is updated to reflect GLE API changes (interface
- changes, semantic changes, deletions, or additions).
- 
- GLE_API_VERSION=228  GLUT 3.7 release of GLE.
-**/
-#ifndef GLE_API_VERSION  /* allow this to be overriden */
-#define GLE_API_VERSION                228
-#endif
-
-/* some types */
-#ifndef gleDouble
-    #define gleDouble double
-#endif
-typedef gleDouble gleAffine[2][3];
-
-/* ====================================================== */
-
-/* defines for tubing join styles */
-#define TUBE_JN_RAW          0x1
-#define TUBE_JN_ANGLE        0x2
-#define TUBE_JN_CUT          0x3
-#define TUBE_JN_ROUND        0x4
-#define TUBE_JN_MASK         0xf    /* mask bits */
-#define TUBE_JN_CAP          0x10
-
-/* determine how normal vectors are to be handled */
-#define TUBE_NORM_FACET      0x100
-#define TUBE_NORM_EDGE       0x200
-#define TUBE_NORM_PATH_EDGE  0x400 /* for spiral, lathe, helix primitives */
-#define TUBE_NORM_MASK       0xf00    /* mask bits */
-
-/* closed or open countours */
-#define TUBE_CONTOUR_CLOSED	0x1000
-
-#define GLE_TEXTURE_ENABLE	0x10000
-#define GLE_TEXTURE_STYLE_MASK	0xff
-#define GLE_TEXTURE_VERTEX_FLAT		1
-#define GLE_TEXTURE_NORMAL_FLAT		2
-#define GLE_TEXTURE_VERTEX_CYL		3
-#define GLE_TEXTURE_NORMAL_CYL		4
-#define GLE_TEXTURE_VERTEX_SPH		5
-#define GLE_TEXTURE_NORMAL_SPH		6
-#define GLE_TEXTURE_VERTEX_MODEL_FLAT	7
-#define GLE_TEXTURE_NORMAL_MODEL_FLAT	8
-#define GLE_TEXTURE_VERTEX_MODEL_CYL	9
-#define GLE_TEXTURE_NORMAL_MODEL_CYL	10
-#define GLE_TEXTURE_VERTEX_MODEL_SPH	11
-#define GLE_TEXTURE_NORMAL_MODEL_SPH	12
-
-#ifdef GL_32
-/* HACK for GL 3.2 -- needed because no way to tell if lighting is on.  */
-#define TUBE_LIGHTING_ON	0x80000000
-
-#define gleExtrusion		extrusion
-#define gleSetJoinStyle		setjoinstyle
-#define gleGetJoinStyle		getjoinstyle
-#define glePolyCone		polycone
-#define glePolyCylinder		polycylinder
-#define	gleSuperExtrusion	super_extrusion
-#define	gleTwistExtrusion	twist_extrusion
-#define	gleSpiral		spiral
-#define	gleLathe		lathe
-#define	gleHelicoid		helicoid
-#define	gleToroid		toroid
-#define	gleScrew		screw
-
-#endif /* GL_32 */
-
-extern int gleGetJoinStyle (void);
-extern void gleSetJoinStyle (int style);	/* bitwise OR of flags */
-extern int gleGetNumSlices(void);
-extern void gleSetNumSlices(int slices);
-
-/* draw polyclinder, specified as a polyline */
-extern void glePolyCylinder (int npoints,	/* num points in polyline */
-                   gleDouble point_array[][3],	/* polyline vertces */
-                   float color_array[][3],	/* colors at polyline verts */
-                   gleDouble radius);		/* radius of polycylinder */
-
-/* draw polycone, specified as a polyline with radii */
-extern void glePolyCone (int npoints,	 /* numpoints in poly-line */
-                   gleDouble point_array[][3],	/* polyline vertices */
-                   float color_array[][3],	/* colors at polyline verts */
-                   gleDouble radius_array[]); /* cone radii at polyline verts */
-
-/* extrude arbitrary 2D contour along arbitrary 3D path */
-extern void gleExtrusion (int ncp,         /* number of contour points */
-                gleDouble contour[][2],     /* 2D contour */
-                gleDouble cont_normal[][2], /* 2D contour normals */
-                gleDouble up[3],            /* up vector for contour */
-                int npoints,            /* numpoints in poly-line */
-                gleDouble point_array[][3], /* polyline vertices */
-                float color_array[][3]); /* colors at polyline verts */
-
-/* extrude 2D contour, specifying local rotations (twists) */
-extern void gleTwistExtrusion (int ncp,         /* number of contour points */
-                gleDouble contour[][2],    /* 2D contour */
-                gleDouble cont_normal[][2], /* 2D contour normals */
-                gleDouble up[3],           /* up vector for contour */
-                int npoints,           /* numpoints in poly-line */
-                gleDouble point_array[][3],        /* polyline vertices */
-                float color_array[][3],        /* color at polyline verts */
-                gleDouble twist_array[]);   /* countour twists (in degrees) */
-
-/* extrude 2D contour, specifying local affine tranformations */
-extern void gleSuperExtrusion (int ncp,  /* number of contour points */
-                gleDouble contour[][2],    /* 2D contour */
-                gleDouble cont_normal[][2], /* 2D contour normals */
-                gleDouble up[3],           /* up vector for contour */
-                int npoints,           /* numpoints in poly-line */
-                gleDouble point_array[][3],        /* polyline vertices */
-                float color_array[][3],        /* color at polyline verts */
-                gleDouble xform_array[][2][3]);   /* 2D contour xforms */
-
-/* spiral moves contour along helical path by parallel transport */
-extern void gleSpiral (int ncp,        /* number of contour points */
-             gleDouble contour[][2],    /* 2D contour */
-             gleDouble cont_normal[][2], /* 2D contour normals */
-             gleDouble up[3],           /* up vector for contour */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* lathe moves contour along helical path by helically shearing 3D space */
-extern void gleLathe (int ncp,        /* number of contour points */
-             gleDouble contour[][2],    /* 2D contour */
-             gleDouble cont_normal[][2], /* 2D contour normals */
-             gleDouble up[3],           /* up vector for contour */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* similar to spiral, except contour is a circle */
-extern void gleHelicoid (gleDouble rToroid, /* circle contour (torus) radius */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* similar to lathe, except contour is a circle */
-extern void gleToroid (gleDouble rToroid, /* circle contour (torus) radius */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* draws a screw shape */
-extern void gleScrew (int ncp,          /* number of contour points */
-             gleDouble contour[][2],    /* 2D contour */
-             gleDouble cont_normal[][2], /* 2D contour normals */
-             gleDouble up[3],           /* up vector for contour */
-             gleDouble startz,          /* start of segment */
-             gleDouble endz,            /* end of segment */
-             gleDouble twist);          /* number of rotations */
-
-extern void gleTextureMode (int mode);
-
-#ifdef __cplusplus
-}
-
-#endif
-#endif /* __TUBE_H__ */
-/* ================== END OF FILE ======================= */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/tube_gc.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-
-/*
- * tube_gc.h
- *
- * FUNCTION:
- * This file allows for easy changes to changes in the way the extrusion
- * library handles state info (i.e. context).
- *
- * HISTORY:
- * Linas Vepstas --- February 1993
- * Added auto texture coord generation hacks, Linas April 1994
- * Added tube.h include to define gleDouble, tad February 2002
- */
-
-#include "tube.h"
-#include "port.h" /* for gleVector */
-
-typedef float gleColor[3];
-typedef double gleTwoVec[2];
-
-typedef struct {
-
-   /* public methods */
-   void (*bgn_gen_texture) (int, double);
-   void (*n3f_gen_texture) (float *);
-   void (*n3d_gen_texture) (double *);
-   void (*v3f_gen_texture) (float *, int, int);
-   void (*v3d_gen_texture) (double *, int, int);
-   void (*end_gen_texture) (void);
-
-   /* protected members -- "general knowledge" stuff */
-   int join_style;
-
-   /* arguments passed into extrusion code */ 
-   int ncp;     /* number of contour points */
-   gleTwoVec *contour;    /* 2D contour */
-   gleTwoVec *cont_normal;  /* 2D contour normals */
-   gleDouble *up;               /* up vector */
-   int npoints;  /* number of points in polyline */
-   gleVector *point_array;     /* path */
-   gleColor *color_array;         /* path colors */
-   gleAffine *xform_array;  /* contour xforms */
-
-   /* private members, used by texturing code */
-   int num_vert;
-   int segment_number;
-   double segment_length;
-   double accum_seg_len;
-   double prev_x;
-   double prev_y;
-
-   void (*save_bgn_gen_texture) (int, double);
-   void (*save_n3f_gen_texture) (float *);
-   void (*save_n3d_gen_texture) (double *);
-   void (*save_v3f_gen_texture) (float *, int, int);
-   void (*save_v3d_gen_texture) (double *, int, int);
-   void (*save_end_gen_texture) (void);
-
-} gleGC;
-
-extern gleGC *_gle_gc;
-extern gleGC * gleCreateGC (void);
-
-#define INIT_GC() {if (!_gle_gc) _gle_gc = gleCreateGC(); }
-#define extrusion_join_style (_gle_gc->join_style)
-
-#define __TUBE_CLOSE_CONTOUR (extrusion_join_style & TUBE_CONTOUR_CLOSED)
-#define __TUBE_DRAW_CAP (extrusion_join_style & TUBE_JN_CAP)
-#define __TUBE_DRAW_FACET_NORMALS (extrusion_join_style & TUBE_NORM_FACET)
-#define __TUBE_DRAW_PATH_EDGE_NORMALS (extrusion_join_style & TUBE_NORM_PATH_EDGE)
-
-#define __TUBE_STYLE (extrusion_join_style & TUBE_JN_MASK)
-#define __TUBE_RAW_JOIN (extrusion_join_style & TUBE_JN_RAW)
-#define __TUBE_CUT_JOIN (extrusion_join_style & TUBE_JN_CUT)
-#define __TUBE_ANGLE_JOIN (extrusion_join_style & TUBE_JN_ANGLE)
-#define __TUBE_ROUND_JOIN (extrusion_join_style & TUBE_JN_ROUND)
-
-/* ======================= END OF FILE ========================== */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Headers/vvector.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1339 +0,0 @@
-
-/*
- * vvector.h
- *
- * FUNCTION:
- * This file contains a number of utilities useful for handling
- * 3D vectors
- * 
- * HISTORY:
- * Written by Linas Vepstas, August 1991
- * Added 2D code, March 1993
- * Added Outer products, C++ proofed, Linas Vepstas October 1993
- */
-
-#ifndef __GUTIL_VECTOR_H__
-#define __GUTIL_VECTOR_H__
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-
-#include <math.h>
-#include "port.h"
-
-/* ========================================================== */
-/* Zero out a 2D vector */
-
-#define VEC_ZERO_2(a)				\
-{						\
-   (a)[0] = (a)[1] = 0.0;			\
-}
-
-/* ========================================================== */
-/* Zero out a 3D vector */
-
-#define VEC_ZERO(a)				\
-{						\
-   (a)[0] = (a)[1] = (a)[2] = 0.0;		\
-}
-
-/* ========================================================== */
-/* Zero out a 4D vector */
-
-#define VEC_ZERO_4(a)				\
-{						\
-   (a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0;	\
-}
-
-/* ========================================================== */
-/* Vector copy */
-
-#define VEC_COPY_2(b,a)				\
-{						\
-   (b)[0] = (a)[0];				\
-   (b)[1] = (a)[1];				\
-}
-
-/* ========================================================== */
-/* Copy 3D vector */
-
-#define VEC_COPY(b,a)				\
-{						\
-   (b)[0] = (a)[0];				\
-   (b)[1] = (a)[1];				\
-   (b)[2] = (a)[2];				\
-}
-
-/* ========================================================== */
-/* Copy 4D vector */
-
-#define VEC_COPY_4(b,a)				\
-{						\
-   (b)[0] = (a)[0];				\
-   (b)[1] = (a)[1];				\
-   (b)[2] = (a)[2];				\
-   (b)[3] = (a)[3];				\
-}
-
-/* ========================================================== */
-/* Vector difference */
-
-#define VEC_DIFF_2(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] - (v1)[0];		\
-   (v21)[1] = (v2)[1] - (v1)[1];		\
-}
-
-/* ========================================================== */
-/* Vector difference */
-
-#define VEC_DIFF(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] - (v1)[0];		\
-   (v21)[1] = (v2)[1] - (v1)[1];		\
-   (v21)[2] = (v2)[2] - (v1)[2];		\
-}
-
-/* ========================================================== */
-/* Vector difference */
-
-#define VEC_DIFF_4(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] - (v1)[0];		\
-   (v21)[1] = (v2)[1] - (v1)[1];		\
-   (v21)[2] = (v2)[2] - (v1)[2];		\
-   (v21)[3] = (v2)[3] - (v1)[3];		\
-}
-
-/* ========================================================== */
-/* Vector sum */
-
-#define VEC_SUM_2(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] + (v1)[0];		\
-   (v21)[1] = (v2)[1] + (v1)[1];		\
-}
-
-/* ========================================================== */
-/* Vector sum */
-
-#define VEC_SUM(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] + (v1)[0];		\
-   (v21)[1] = (v2)[1] + (v1)[1];		\
-   (v21)[2] = (v2)[2] + (v1)[2];		\
-}
-
-/* ========================================================== */
-/* Vector sum */
-
-#define VEC_SUM_4(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] + (v1)[0];		\
-   (v21)[1] = (v2)[1] + (v1)[1];		\
-   (v21)[2] = (v2)[2] + (v1)[2];		\
-   (v21)[3] = (v2)[3] + (v1)[3];		\
-}
-
-/* ========================================================== */
-/* scalar times vector */
-
-#define VEC_SCALE_2(c,a,b)			\
-{						\
-   (c)[0] = (a)*(b)[0];				\
-   (c)[1] = (a)*(b)[1];				\
-}
-
-/* ========================================================== */
-/* scalar times vector */
-
-#define VEC_SCALE(c,a,b)			\
-{						\
-   (c)[0] = (a)*(b)[0];				\
-   (c)[1] = (a)*(b)[1];				\
-   (c)[2] = (a)*(b)[2];				\
-}
-
-/* ========================================================== */
-/* scalar times vector */
-
-#define VEC_SCALE_4(c,a,b)			\
-{						\
-   (c)[0] = (a)*(b)[0];				\
-   (c)[1] = (a)*(b)[1];				\
-   (c)[2] = (a)*(b)[2];				\
-   (c)[3] = (a)*(b)[3];				\
-}
-
-/* ========================================================== */
-/* accumulate scaled vector */
-
-#define VEC_ACCUM_2(c,a,b)			\
-{						\
-   (c)[0] += (a)*(b)[0];			\
-   (c)[1] += (a)*(b)[1];			\
-}
-
-/* ========================================================== */
-/* accumulate scaled vector */
-
-#define VEC_ACCUM(c,a,b)			\
-{						\
-   (c)[0] += (a)*(b)[0];			\
-   (c)[1] += (a)*(b)[1];			\
-   (c)[2] += (a)*(b)[2];			\
-}
-
-/* ========================================================== */
-/* accumulate scaled vector */
-
-#define VEC_ACCUM_4(c,a,b)			\
-{						\
-   (c)[0] += (a)*(b)[0];			\
-   (c)[1] += (a)*(b)[1];			\
-   (c)[2] += (a)*(b)[2];			\
-   (c)[3] += (a)*(b)[3];			\
-}
-
-/* ========================================================== */
-/* Vector dot product */
-
-#define VEC_DOT_PRODUCT_2(c,a,b)			\
-{							\
-   c = (a)[0]*(b)[0] + (a)[1]*(b)[1];			\
-}
-
-/* ========================================================== */
-/* Vector dot product */
-
-#define VEC_DOT_PRODUCT(c,a,b)				\
-{							\
-   c = (a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2];	\
-}
-
-/* ========================================================== */
-/* Vector dot product */
-
-#define VEC_DOT_PRODUCT_4(c,a,b)			\
-{							\
-   c = (a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3] ;	\
-}
-
-/* ========================================================== */
-/* vector impact parameter (squared) */
-
-#define VEC_IMPACT_SQ(bsq,direction,position)		\
-{							\
-   gleDouble vlen, llel;					\
-   VEC_DOT_PRODUCT (vlen, position, position);		\
-   VEC_DOT_PRODUCT (llel, direction, position);		\
-   bsq = vlen - llel*llel;				\
-}
-
-/* ========================================================== */
-/* vector impact parameter */
-
-#define VEC_IMPACT(bsq,direction,position)		\
-{							\
-   VEC_IMPACT_SQ(bsq,direction,position);		\
-   bsq = sqrt (bsq);					\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_LENGTH_2(vlen,a)			\
-{						\
-   vlen = a[0]*a[0] + a[1]*a[1];			\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_LENGTH(vlen,a)			\
-{						\
-   vlen = (a)[0]*(a)[0] + (a)[1]*(a)[1];		\
-   vlen += (a)[2]*(a)[2];			\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_LENGTH_4(vlen,a)			\
-{						\
-   vlen = (a)[0]*(a)[0] + (a)[1]*(a)[1];		\
-   vlen += (a)[2]*(a)[2];			\
-   vlen += (a)[3] * (a)[3];			\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* distance between two points */
-
-#define VEC_DISTANCE(vlen,va,vb)			\
-{						\
-    gleDouble tmp[4];				\
-    VEC_DIFF (tmp, vb, va);			\
-    VEC_LENGTH (vlen, tmp);			\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_CONJUGATE_LENGTH(vlen,a)		\
-{						\
-   vlen = 1.0 - a[0]*a[0] - a[1]*a[1] - a[2]*a[2];\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_NORMALIZE(a)			\
-{						\
-   double vlen;					\
-   VEC_LENGTH (vlen,a);				\
-   if (vlen != 0.0) {				\
-      vlen = 1.0 / vlen;				\
-      a[0] *= vlen;				\
-      a[1] *= vlen;				\
-      a[2] *= vlen;				\
-   }						\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_RENORMALIZE(a,newlen)		\
-{						\
-   double vlen;					\
-   VEC_LENGTH (vlen,a);				\
-   if (vlen != 0.0) {				\
-      vlen = newlen / vlen;				\
-      a[0] *= vlen;				\
-      a[1] *= vlen;				\
-      a[2] *= vlen;				\
-   }						\
-}
-
-/* ========================================================== */
-/* 3D Vector cross product yeilding vector */
-
-#define VEC_CROSS_PRODUCT(c,a,b)		\
-{						\
-   c[0] = (a)[1] * (b)[2] - (a)[2] * (b)[1];	\
-   c[1] = (a)[2] * (b)[0] - (a)[0] * (b)[2];	\
-   c[2] = (a)[0] * (b)[1] - (a)[1] * (b)[0];	\
-}
-
-/* ========================================================== */
-/* Vector perp -- assumes that n is of unit length 
- * accepts vector v, subtracts out any component parallel to n */
-
-#define VEC_PERP(vp,v,n)			\
-{						\
-   double vdot;					\
-						\
-   VEC_DOT_PRODUCT (vdot, v, n);			\
-   vp[0] = (v)[0] - (vdot) * (n)[0];		\
-   vp[1] = (v)[1] - (vdot) * (n)[1];		\
-   vp[2] = (v)[2] - (vdot) * (n)[2];		\
-}
-
-/* ========================================================== */
-/* Vector parallel -- assumes that n is of unit length 
- * accepts vector v, subtracts out any component perpendicular to n */
-
-#define VEC_PARALLEL(vp,v,n)			\
-{						\
-   double vdot;					\
-						\
-   VEC_DOT_PRODUCT (vdot, v, n);			\
-   vp[0] = (vdot) * (n)[0];			\
-   vp[1] = (vdot) * (n)[1];			\
-   vp[2] = (vdot) * (n)[2];			\
-}
-
-/* ========================================================== */
-/* Vector reflection -- assumes n is of unit length */
-/* Takes vector v, reflects it against reflector n, and returns vr */
-
-#define VEC_REFLECT(vr,v,n)			\
-{						\
-   double vdot;					\
-						\
-   VEC_DOT_PRODUCT (vdot, v, n);			\
-   vr[0] = (v)[0] - 2.0 * (vdot) * (n)[0];	\
-   vr[1] = (v)[1] - 2.0 * (vdot) * (n)[1];	\
-   vr[2] = (v)[2] - 2.0 * (vdot) * (n)[2];	\
-}
-
-/* ========================================================== */
-/* Vector blending */
-/* Takes two vectors a, b, blends them together */ 
-
-#define VEC_BLEND(vr,sa,a,sb,b)			\
-{						\
-						\
-   vr[0] = (sa) * (a)[0] + (sb) * (b)[0];	\
-   vr[1] = (sa) * (a)[1] + (sb) * (b)[1];	\
-   vr[2] = (sa) * (a)[2] + (sb) * (b)[2];	\
-}
-
-/* ========================================================== */
-/* Vector print */
-
-#define VEC_PRINT_2(a)					\
-{							\
-   double vlen;						\
-   VEC_LENGTH_2 (vlen, a);					\
-   printf (" a is %f %f length of a is %f \n", a[0], a[1], vlen); \
-}
-
-/* ========================================================== */
-/* Vector print */
-
-#define VEC_PRINT(a)					\
-{							\
-   double vlen;						\
-   VEC_LENGTH (vlen, (a));				\
-   printf (" a is %f %f %f length of a is %f \n", (a)[0], (a)[1], (a)[2], vlen); \
-}
-
-/* ========================================================== */
-/* Vector print */
-
-#define VEC_PRINT_4(a)					\
-{							\
-   double vlen;						\
-   VEC_LENGTH_4 (vlen, (a));				\
-   printf (" a is %f %f %f %f length of a is %f \n",	\
-       (a)[0], (a)[1], (a)[2], (a)[3], vlen);		\
-}
-
-/* ========================================================== */
-/* print matrix */
-
-#define MAT_PRINT_4X4(mmm) {				\
-   int i,j;						\
-   printf ("matrix mmm is \n");				\
-   if (mmm == NULL) {					\
-      printf (" Null \n");				\
-   } else {						\
-      for (i=0; i<4; i++) {				\
-         for (j=0; j<4; j++) {				\
-            printf ("%f ", mmm[i][j]);			\
-         }						\
-         printf (" \n");				\
-      }							\
-   }							\
-}
-
-/* ========================================================== */
-/* print matrix */
-
-#define MAT_PRINT_3X3(mmm) {				\
-   int i,j;						\
-   printf ("matrix mmm is \n");				\
-   if (mmm == NULL) {					\
-      printf (" Null \n");				\
-   } else {						\
-      for (i=0; i<3; i++) {				\
-         for (j=0; j<3; j++) {				\
-            printf ("%f ", mmm[i][j]);			\
-         }						\
-         printf (" \n");				\
-      }							\
-   }							\
-}
-
-/* ========================================================== */
-/* print matrix */
-
-#define MAT_PRINT_2X3(mmm) {				\
-   int i,j;						\
-   printf ("matrix mmm is \n");				\
-   if (mmm == NULL) {					\
-      printf (" Null \n");				\
-   } else {						\
-      for (i=0; i<2; i++) {				\
-         for (j=0; j<3; j++) {				\
-            printf ("%f ", mmm[i][j]);			\
-         }						\
-         printf (" \n");				\
-      }							\
-   }							\
-}
-
-/* ========================================================== */
-/* initialize matrix */
-
-#define IDENTIFY_MATRIX_3X3(m)			\
-{						\
-   m[0][0] = 1.0;				\
-   m[0][1] = 0.0;				\
-   m[0][2] = 0.0;				\
-						\
-   m[1][0] = 0.0;				\
-   m[1][1] = 1.0;				\
-   m[1][2] = 0.0;				\
-						\
-   m[2][0] = 0.0;				\
-   m[2][1] = 0.0;				\
-   m[2][2] = 1.0;				\
-}
-
-/* ========================================================== */
-/* initialize matrix */
-
-#define IDENTIFY_MATRIX_4X4(m)			\
-{						\
-   m[0][0] = 1.0;				\
-   m[0][1] = 0.0;				\
-   m[0][2] = 0.0;				\
-   m[0][3] = 0.0;				\
-						\
-   m[1][0] = 0.0;				\
-   m[1][1] = 1.0;				\
-   m[1][2] = 0.0;				\
-   m[1][3] = 0.0;				\
-						\
-   m[2][0] = 0.0;				\
-   m[2][1] = 0.0;				\
-   m[2][2] = 1.0;				\
-   m[2][3] = 0.0;				\
-						\
-   m[3][0] = 0.0;				\
-   m[3][1] = 0.0;				\
-   m[3][2] = 0.0;				\
-   m[3][3] = 1.0;				\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_2X2(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-				\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_2X3(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-   b[0][2] = a[0][2];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[1][2];		\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_3X3(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-   b[0][2] = a[0][2];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[1][2];		\
-				\
-   b[2][0] = a[2][0];		\
-   b[2][1] = a[2][1];		\
-   b[2][2] = a[2][2];		\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_4X4(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-   b[0][2] = a[0][2];		\
-   b[0][3] = a[0][3];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[1][2];		\
-   b[1][3] = a[1][3];		\
-				\
-   b[2][0] = a[2][0];		\
-   b[2][1] = a[2][1];		\
-   b[2][2] = a[2][2];		\
-   b[2][3] = a[2][3];		\
-				\
-   b[3][0] = a[3][0];		\
-   b[3][1] = a[3][1];		\
-   b[3][2] = a[3][2];		\
-   b[3][3] = a[3][3];		\
-}
-
-/* ========================================================== */
-/* matrix transpose */
-
-#define TRANSPOSE_MATRIX_2X2(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[1][0];		\
-				\
-   b[1][0] = a[0][1];		\
-   b[1][1] = a[1][1];		\
-}
-
-/* ========================================================== */
-/* matrix transpose */
-
-#define TRANSPOSE_MATRIX_3X3(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[1][0];		\
-   b[0][2] = a[2][0];		\
-				\
-   b[1][0] = a[0][1];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[2][1];		\
-				\
-   b[2][0] = a[0][2];		\
-   b[2][1] = a[1][2];		\
-   b[2][2] = a[2][2];		\
-}
-
-/* ========================================================== */
-/* matrix transpose */
-
-#define TRANSPOSE_MATRIX_4X4(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[1][0];		\
-   b[0][2] = a[2][0];		\
-   b[0][3] = a[3][0];		\
-				\
-   b[1][0] = a[0][1];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[2][1];		\
-   b[1][3] = a[3][1];		\
-				\
-   b[2][0] = a[0][2];		\
-   b[2][1] = a[1][2];		\
-   b[2][2] = a[2][2];		\
-   b[2][3] = a[3][2];		\
-				\
-   b[3][0] = a[0][3];		\
-   b[3][1] = a[1][3];		\
-   b[3][2] = a[2][3];		\
-   b[3][3] = a[3][3];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define SCALE_MATRIX_2X2(b,s,a)		\
-{					\
-   b[0][0] = (s) * a[0][0];		\
-   b[0][1] = (s) * a[0][1];		\
-					\
-   b[1][0] = (s) * a[1][0];		\
-   b[1][1] = (s) * a[1][1];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define SCALE_MATRIX_3X3(b,s,a)		\
-{					\
-   b[0][0] = (s) * a[0][0];		\
-   b[0][1] = (s) * a[0][1];		\
-   b[0][2] = (s) * a[0][2];		\
-					\
-   b[1][0] = (s) * a[1][0];		\
-   b[1][1] = (s) * a[1][1];		\
-   b[1][2] = (s) * a[1][2];		\
-					\
-   b[2][0] = (s) * a[2][0];		\
-   b[2][1] = (s) * a[2][1];		\
-   b[2][2] = (s) * a[2][2];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define SCALE_MATRIX_4X4(b,s,a)		\
-{					\
-   b[0][0] = (s) * a[0][0];		\
-   b[0][1] = (s) * a[0][1];		\
-   b[0][2] = (s) * a[0][2];		\
-   b[0][3] = (s) * a[0][3];		\
-					\
-   b[1][0] = (s) * a[1][0];		\
-   b[1][1] = (s) * a[1][1];		\
-   b[1][2] = (s) * a[1][2];		\
-   b[1][3] = (s) * a[1][3];		\
-					\
-   b[2][0] = (s) * a[2][0];		\
-   b[2][1] = (s) * a[2][1];		\
-   b[2][2] = (s) * a[2][2];		\
-   b[2][3] = (s) * a[2][3];		\
-					\
-   b[3][0] = s * a[3][0];		\
-   b[3][1] = s * a[3][1];		\
-   b[3][2] = s * a[3][2];		\
-   b[3][3] = s * a[3][3];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define ACCUM_SCALE_MATRIX_2X2(b,s,a)		\
-{					\
-   b[0][0] += (s) * a[0][0];		\
-   b[0][1] += (s) * a[0][1];		\
-					\
-   b[1][0] += (s) * a[1][0];		\
-   b[1][1] += (s) * a[1][1];		\
-}
-
-/* +========================================================== */
-/* multiply matrix by scalar */
-
-#define ACCUM_SCALE_MATRIX_3X3(b,s,a)		\
-{					\
-   b[0][0] += (s) * a[0][0];		\
-   b[0][1] += (s) * a[0][1];		\
-   b[0][2] += (s) * a[0][2];		\
-					\
-   b[1][0] += (s) * a[1][0];		\
-   b[1][1] += (s) * a[1][1];		\
-   b[1][2] += (s) * a[1][2];		\
-					\
-   b[2][0] += (s) * a[2][0];		\
-   b[2][1] += (s) * a[2][1];		\
-   b[2][2] += (s) * a[2][2];		\
-}
-
-/* +========================================================== */
-/* multiply matrix by scalar */
-
-#define ACCUM_SCALE_MATRIX_4X4(b,s,a)		\
-{					\
-   b[0][0] += (s) * a[0][0];		\
-   b[0][1] += (s) * a[0][1];		\
-   b[0][2] += (s) * a[0][2];		\
-   b[0][3] += (s) * a[0][3];		\
-					\
-   b[1][0] += (s) * a[1][0];		\
-   b[1][1] += (s) * a[1][1];		\
-   b[1][2] += (s) * a[1][2];		\
-   b[1][3] += (s) * a[1][3];		\
-					\
-   b[2][0] += (s) * a[2][0];		\
-   b[2][1] += (s) * a[2][1];		\
-   b[2][2] += (s) * a[2][2];		\
-   b[2][3] += (s) * a[2][3];		\
-					\
-   b[3][0] += (s) * a[3][0];		\
-   b[3][1] += (s) * a[3][1];		\
-   b[3][2] += (s) * a[3][2];		\
-   b[3][3] += (s) * a[3][3];		\
-}
-
-/* +========================================================== */
-/* matrix product */
-/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
-
-#define MATRIX_PRODUCT_2X2(c,a,b)		\
-{						\
-   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0];	\
-   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1];	\
-						\
-   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0];	\
-   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1];	\
-						\
-}
-
-/* ========================================================== */
-/* matrix product */
-/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
-
-#define MATRIX_PRODUCT_3X3(c,a,b)				\
-{								\
-   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0];	\
-   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1];	\
-   c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2];	\
-								\
-   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0];	\
-   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1];	\
-   c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2];	\
-								\
-   c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0];	\
-   c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1];	\
-   c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2];	\
-}
-
-/* ========================================================== */
-/* matrix product */
-/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
-
-#define MATRIX_PRODUCT_4X4(c,a,b)		\
-{						\
-   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0];\
-   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1];\
-   c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2];\
-   c[0][3] = a[0][0]*b[0][3]+a[0][1]*b[1][3]+a[0][2]*b[2][3]+a[0][3]*b[3][3];\
-						\
-   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]+a[1][3]*b[3][0];\
-   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1];\
-   c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]+a[1][3]*b[3][2];\
-   c[1][3] = a[1][0]*b[0][3]+a[1][1]*b[1][3]+a[1][2]*b[2][3]+a[1][3]*b[3][3];\
-						\
-   c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]+a[2][3]*b[3][0];\
-   c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]+a[2][3]*b[3][1];\
-   c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]+a[2][3]*b[3][2];\
-   c[2][3] = a[2][0]*b[0][3]+a[2][1]*b[1][3]+a[2][2]*b[2][3]+a[2][3]*b[3][3];\
-						\
-   c[3][0] = a[3][0]*b[0][0]+a[3][1]*b[1][0]+a[3][2]*b[2][0]+a[3][3]*b[3][0];\
-   c[3][1] = a[3][0]*b[0][1]+a[3][1]*b[1][1]+a[3][2]*b[2][1]+a[3][3]*b[3][1];\
-   c[3][2] = a[3][0]*b[0][2]+a[3][1]*b[1][2]+a[3][2]*b[2][2]+a[3][3]*b[3][2];\
-   c[3][3] = a[3][0]*b[0][3]+a[3][1]*b[1][3]+a[3][2]*b[2][3]+a[3][3]*b[3][3];\
-}
-
-/* ========================================================== */
-/* matrix times vector */
-
-#define MAT_DOT_VEC_2X2(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1];				\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1];				\
-}
-
-/* ========================================================== */
-/* matrix times vector */
-
-#define MAT_DOT_VEC_3X3(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2];		\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2];		\
-   p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2];		\
-}
-
-/* ========================================================== */
-/* matrix times vector */
-
-#define MAT_DOT_VEC_4X4(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]*v[3];	\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]*v[3];	\
-   p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]*v[3];	\
-   p[3] = m[3][0]*v[0] + m[3][1]*v[1] + m[3][2]*v[2] + m[3][3]*v[3];	\
-}
-
-/* ========================================================== */
-/* vector transpose times matrix */
-/* p[j] = v[0]*m[0][j] + v[1]*m[1][j] + v[2]*m[2][j]; */
-
-#define VEC_DOT_MAT_3X3(p,v,m)					\
-{								\
-   p[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0];		\
-   p[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1];		\
-   p[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2];		\
-}
-
-/* ========================================================== */
-/* affine matrix times vector */
-/* The matrix is assumed to be an affine matrix, with last two 
- * entries representing a translation */
-
-#define MAT_DOT_VEC_2X3(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2];		\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2];		\
-}
-
-/* ========================================================== */
-/* inverse transpose of matrix times vector
- *
- * This macro computes inverse transpose of matrix m, 
- * and multiplies vector v into it, to yeild vector p
- *
- * DANGER !!! Do Not use this on normal vectors!!!
- * It will leave normals the wrong length !!!
- * See macro below for use on normals.
- */
-
-#define INV_TRANSP_MAT_DOT_VEC_2X2(p,m,v)			\
-{								\
-   gleDouble det;						\
-								\
-   det = m[0][0]*m[1][1] - m[0][1]*m[1][0];			\
-   p[0] = m[1][1]*v[0] - m[1][0]*v[1];				\
-   p[1] = - m[0][1]*v[0] + m[0][0]*v[1];			\
-								\
-   /* if matrix not singular, and not orthonormal, then renormalize */ \
-   if ((det!=1.0) && (det != 0.0)) {				\
-      det = 1.0 / det;						\
-      p[0] *= det;						\
-      p[1] *= det;						\
-   }								\
-}
-
-/* ========================================================== */
-/* transform normal vector by inverse transpose of matrix 
- * and then renormalize the vector 
- *
- * This macro computes inverse transpose of matrix m, 
- * and multiplies vector v into it, to yeild vector p
- * Vector p is then normalized.
- */
-
-
-#define NORM_XFORM_2X2(p,m,v)					\
-{								\
-   double mlen;							\
-								\
-   /* do nothing if off-diagonals are zero and diagonals are 	\
-    * equal */							\
-   if ((m[0][1] != 0.0) || (m[1][0] != 0.0) || (m[0][0] != m[1][1])) { \
-      p[0] = m[1][1]*v[0] - m[1][0]*v[1];			\
-      p[1] = - m[0][1]*v[0] + m[0][0]*v[1];			\
-								\
-      mlen = p[0]*p[0] + p[1]*p[1];				\
-      mlen = 1.0 / sqrt (mlen);					\
-      p[0] *= mlen;						\
-      p[1] *= mlen;						\
-   } else {							\
-      VEC_COPY_2 (p, v);					\
-   }								\
-}
-
-/* ========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define OUTER_PRODUCT_2X2(m,v,t)				\
-{								\
-   m[0][0] = v[0] * t[0];					\
-   m[0][1] = v[0] * t[1];					\
-								\
-   m[1][0] = v[1] * t[0];					\
-   m[1][1] = v[1] * t[1];					\
-}
-
-/* ========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define OUTER_PRODUCT_3X3(m,v,t)				\
-{								\
-   m[0][0] = v[0] * t[0];					\
-   m[0][1] = v[0] * t[1];					\
-   m[0][2] = v[0] * t[2];					\
-								\
-   m[1][0] = v[1] * t[0];					\
-   m[1][1] = v[1] * t[1];					\
-   m[1][2] = v[1] * t[2];					\
-								\
-   m[2][0] = v[2] * t[0];					\
-   m[2][1] = v[2] * t[1];					\
-   m[2][2] = v[2] * t[2];					\
-}
-
-/* ========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define OUTER_PRODUCT_4X4(m,v,t)				\
-{								\
-   m[0][0] = v[0] * t[0];					\
-   m[0][1] = v[0] * t[1];					\
-   m[0][2] = v[0] * t[2];					\
-   m[0][3] = v[0] * t[3];					\
-								\
-   m[1][0] = v[1] * t[0];					\
-   m[1][1] = v[1] * t[1];					\
-   m[1][2] = v[1] * t[2];					\
-   m[1][3] = v[1] * t[3];					\
-								\
-   m[2][0] = v[2] * t[0];					\
-   m[2][1] = v[2] * t[1];					\
-   m[2][2] = v[2] * t[2];					\
-   m[2][3] = v[2] * t[3];					\
-								\
-   m[3][0] = v[3] * t[0];					\
-   m[3][1] = v[3] * t[1];					\
-   m[3][2] = v[3] * t[2];					\
-   m[3][3] = v[3] * t[3];					\
-}
-
-/* +========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define ACCUM_OUTER_PRODUCT_2X2(m,v,t)				\
-{								\
-   m[0][0] += v[0] * t[0];					\
-   m[0][1] += v[0] * t[1];					\
-								\
-   m[1][0] += v[1] * t[0];					\
-   m[1][1] += v[1] * t[1];					\
-}
-
-/* +========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define ACCUM_OUTER_PRODUCT_3X3(m,v,t)				\
-{								\
-   m[0][0] += v[0] * t[0];					\
-   m[0][1] += v[0] * t[1];					\
-   m[0][2] += v[0] * t[2];					\
-								\
-   m[1][0] += v[1] * t[0];					\
-   m[1][1] += v[1] * t[1];					\
-   m[1][2] += v[1] * t[2];					\
-								\
-   m[2][0] += v[2] * t[0];					\
-   m[2][1] += v[2] * t[1];					\
-   m[2][2] += v[2] * t[2];					\
-}
-
-/* +========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define ACCUM_OUTER_PRODUCT_4X4(m,v,t)				\
-{								\
-   m[0][0] += v[0] * t[0];					\
-   m[0][1] += v[0] * t[1];					\
-   m[0][2] += v[0] * t[2];					\
-   m[0][3] += v[0] * t[3];					\
-								\
-   m[1][0] += v[1] * t[0];					\
-   m[1][1] += v[1] * t[1];					\
-   m[1][2] += v[1] * t[2];					\
-   m[1][3] += v[1] * t[3];					\
-								\
-   m[2][0] += v[2] * t[0];					\
-   m[2][1] += v[2] * t[1];					\
-   m[2][2] += v[2] * t[2];					\
-   m[2][3] += v[2] * t[3];					\
-								\
-   m[3][0] += v[3] * t[0];					\
-   m[3][1] += v[3] * t[1];					\
-   m[3][2] += v[3] * t[2];					\
-   m[3][3] += v[3] * t[3];					\
-}
-
-/* +========================================================== */
-/* determinant of matrix
- *
- * Computes determinant of matrix m, returning d
- */
-
-#define DETERMINANT_2X2(d,m)					\
-{								\
-   d = m[0][0] * m[1][1] - m[0][1] * m[1][0];			\
-}
-
-/* ========================================================== */
-/* determinant of matrix
- *
- * Computes determinant of matrix m, returning d
- */
-
-#define DETERMINANT_3X3(d,m)					\
-{								\
-   d = m[0][0] * (m[1][1]*m[2][2] - m[1][2] * m[2][1]);		\
-   d -= m[0][1] * (m[1][0]*m[2][2] - m[1][2] * m[2][0]);	\
-   d += m[0][2] * (m[1][0]*m[2][1] - m[1][1] * m[2][0]);	\
-}
-
-/* ========================================================== */
-/* i,j,th cofactor of a 4x4 matrix
- *
- */
-
-#define COFACTOR_4X4_IJ(fac,m,i,j) 				\
-{								\
-   int ii[4], jj[4], k;						\
-								\
-   /* compute which row, columnt to skip */			\
-   for (k=0; k<i; k++) ii[k] = k;				\
-   for (k=i; k<3; k++) ii[k] = k+1;				\
-   for (k=0; k<j; k++) jj[k] = k;				\
-   for (k=j; k<3; k++) jj[k] = k+1;				\
-								\
-   (fac) = m[ii[0]][jj[0]] * (m[ii[1]][jj[1]]*m[ii[2]][jj[2]] 	\
-                            - m[ii[1]][jj[2]]*m[ii[2]][jj[1]]); \
-   (fac) -= m[ii[0]][jj[1]] * (m[ii[1]][jj[0]]*m[ii[2]][jj[2]]	\
-                             - m[ii[1]][jj[2]]*m[ii[2]][jj[0]]);\
-   (fac) += m[ii[0]][jj[2]] * (m[ii[1]][jj[0]]*m[ii[2]][jj[1]]	\
-                             - m[ii[1]][jj[1]]*m[ii[2]][jj[0]]);\
-								\
-   /* compute sign */						\
-   k = i+j;							\
-   if ( k != (k/2)*2) {						\
-      (fac) = -(fac);						\
-   }								\
-}
-
-/* ========================================================== */
-/* determinant of matrix
- *
- * Computes determinant of matrix m, returning d
- */
-
-#define DETERMINANT_4X4(d,m)					\
-{								\
-   double cofac;						\
-   COFACTOR_4X4_IJ (cofac, m, 0, 0);				\
-   d = m[0][0] * cofac;						\
-   COFACTOR_4X4_IJ (cofac, m, 0, 1);				\
-   d += m[0][1] * cofac;					\
-   COFACTOR_4X4_IJ (cofac, m, 0, 2);				\
-   d += m[0][2] * cofac;					\
-   COFACTOR_4X4_IJ (cofac, m, 0, 3);				\
-   d += m[0][3] * cofac;					\
-}
-
-/* ========================================================== */
-/* cofactor of matrix
- *
- * Computes cofactor of matrix m, returning a
- */
-
-#define COFACTOR_2X2(a,m)					\
-{								\
-   a[0][0] = (m)[1][1];						\
-   a[0][1] = - (m)[1][0];						\
-   a[1][0] = - (m)[0][1];						\
-   a[1][1] = (m)[0][0];						\
-}
-
-/* ========================================================== */
-/* cofactor of matrix
- *
- * Computes cofactor of matrix m, returning a
- */
-
-#define COFACTOR_3X3(a,m)					\
-{								\
-   a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1];			\
-   a[0][1] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]);		\
-   a[0][2] = m[1][0]*m[2][1] - m[1][1]*m[2][0];			\
-   a[1][0] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]);		\
-   a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0];			\
-   a[1][2] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]);		\
-   a[2][0] = m[0][1]*m[1][2] - m[0][2]*m[1][1];			\
-   a[2][1] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]);		\
-   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);		\
-}
-
-/* ========================================================== */
-/* cofactor of matrix
- *
- * Computes cofactor of matrix m, returning a
- */
-
-#define COFACTOR_4X4(a,m)					\
-{								\
-   int i,j;							\
-								\
-   for (i=0; i<4; i++) {					\
-      for (j=0; j<4; j++) {					\
-         COFACTOR_4X4_IJ (a[i][j], m, i, j);			\
-      }								\
-   }								\
-}
-
-/* ========================================================== */
-/* adjoint of matrix
- *
- * Computes adjoint of matrix m, returning a
- * (Note that adjoint is just the transpose of the cofactor matrix)
- */
-
-#define ADJOINT_2X2(a,m)					\
-{								\
-   a[0][0] = (m)[1][1];						\
-   a[1][0] = - (m)[1][0];						\
-   a[0][1] = - (m)[0][1];						\
-   a[1][1] = (m)[0][0];						\
-}
-
-/* ========================================================== */
-/* adjoint of matrix
- *
- * Computes adjoint of matrix m, returning a
- * (Note that adjoint is just the transpose of the cofactor matrix)
- */
-
-
-#define ADJOINT_3X3(a,m)					\
-{								\
-   a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1];			\
-   a[1][0] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]);		\
-   a[2][0] = m[1][0]*m[2][1] - m[1][1]*m[2][0];			\
-   a[0][1] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]);		\
-   a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0];			\
-   a[2][1] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]);		\
-   a[0][2] = m[0][1]*m[1][2] - m[0][2]*m[1][1];			\
-   a[1][2] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]);		\
-   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);		\
-}
-
-/* ========================================================== */
-/* adjoint of matrix
- *
- * Computes adjoint of matrix m, returning a
- * (Note that adjoint is just the transpose of the cofactor matrix)
- */
-
-#define ADJOINT_4X4(a,m)					\
-{								\
-   int i,j;							\
-								\
-   for (i=0; i<4; i++) {					\
-      for (j=0; j<4; j++) {					\
-         COFACTOR_4X4_IJ (a[j][i], m, i, j);			\
-      }								\
-   }								\
-}
-
-/* ========================================================== */
-/* compute adjoint of matrix and scale
- *
- * Computes adjoint of matrix m, scales it by s, returning a
- */
-
-#define SCALE_ADJOINT_2X2(a,s,m)				\
-{								\
-   a[0][0] = (s) * m[1][1];					\
-   a[1][0] = - (s) * m[1][0];					\
-   a[0][1] = - (s) * m[0][1];					\
-   a[1][1] = (s) * m[0][0];					\
-}
-
-/* ========================================================== */
-/* compute adjoint of matrix and scale
- *
- * Computes adjoint of matrix m, scales it by s, returning a
- */
-
-#define SCALE_ADJOINT_3X3(a,s,m)				\
-{								\
-   a[0][0] = (s) * (m[1][1] * m[2][2] - m[1][2] * m[2][1]);	\
-   a[1][0] = (s) * (m[1][2] * m[2][0] - m[1][0] * m[2][2]);	\
-   a[2][0] = (s) * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);	\
-								\
-   a[0][1] = (s) * (m[0][2] * m[2][1] - m[0][1] * m[2][2]);	\
-   a[1][1] = (s) * (m[0][0] * m[2][2] - m[0][2] * m[2][0]);	\
-   a[2][1] = (s) * (m[0][1] * m[2][0] - m[0][0] * m[2][1]);	\
-								\
-   a[0][2] = (s) * (m[0][1] * m[1][2] - m[0][2] * m[1][1]);	\
-   a[1][2] = (s) * (m[0][2] * m[1][0] - m[0][0] * m[1][2]);	\
-   a[2][2] = (s) * (m[0][0] * m[1][1] - m[0][1] * m[1][0]);	\
-}
-
-/* ========================================================== */
-/* compute adjoint of matrix and scale
- *
- * Computes adjoint of matrix m, scales it by s, returning a
- */
-
-#define SCALE_ADJOINT_4X4(a,s,m)				\
-{								\
-   int i,j;							\
-								\
-   for (i=0; i<4; i++) {					\
-      for (j=0; j<4; j++) {					\
-         COFACTOR_4X4_IJ (a[j][i], m, i, j);			\
-         a[j][i] *= s;						\
-      }								\
-   }								\
-}
-
-/* ========================================================== */
-/* inverse of matrix 
- *
- * Compute inverse of matrix a, returning determinant m and 
- * inverse b
- */
-
-#define INVERT_2X2(b,det,a)			\
-{						\
-   double tmp;					\
-   DETERMINANT_2X2 (det, a);			\
-   tmp = 1.0 / (det);				\
-   SCALE_ADJOINT_2X2 (b, tmp, a);		\
-}
-
-/* ========================================================== */
-/* inverse of matrix 
- *
- * Compute inverse of matrix a, returning determinant m and 
- * inverse b
- */
-
-#define INVERT_3X3(b,det,a)			\
-{						\
-   double tmp;					\
-   DETERMINANT_3X3 (det, a);			\
-   tmp = 1.0 / (det);				\
-   SCALE_ADJOINT_3X3 (b, tmp, a);		\
-}
-
-/* ========================================================== */
-/* inverse of matrix 
- *
- * Compute inverse of matrix a, returning determinant m and 
- * inverse b
- */
-
-#define INVERT_4X4(b,det,a)			\
-{						\
-   double tmp;					\
-   DETERMINANT_4X4 (det, a);			\
-   tmp = 1.0 / (det);				\
-   SCALE_ADJOINT_4X4 (b, tmp, a);		\
-}
-
-/* ========================================================== */
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif /* __GUTIL_VECTOR_H__ */
-/* ===================== END OF FILE ======================== */
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/Caution.tiff has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUT.nib/classes.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {save = id; saveAs = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {timerAction = id; }; 
-            CLASS = GLUTApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                "_aboutMenuItem" = NSMenuItem; 
-                "_hideMenuItem" = NSMenuItem; 
-                "_quitMenuItem" = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {toggleWindow = id; }; 
-            CLASS = GLUTClipboardController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {"_infoText" = id; "_scrollView" = id; }; 
-            SUPERCLASS = NSWindowController; 
-        }, 
-        {
-            ACTIONS = {
-                assign = id; 
-                cancel = id; 
-                inputMenu = id; 
-                invertInput = id; 
-                mouseMatrix = id; 
-                mousePreset = id; 
-                ok = id; 
-                setDefault = id; 
-            }; 
-            CLASS = GLUTPreferencesController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                assignPrompt = NSTextField; 
-                assignText = NSTextField; 
-                inputMenu = NSPopUpButton; 
-                inverted = NSButton; 
-                mbConfigMenu = NSPopUpButton; 
-                mbConfigWarningIcon = NSImageView; 
-                mbConfigWarningText = NSTextField; 
-                middleButtonMatrix = NSMatrix; 
-                rightButtonMatrix = NSMatrix; 
-            }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUT.nib/info.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>4 104 410 240 0 0 1152 848 </string>
-	<key>IBEditorPositions</key>
-	<dict>
-		<key>29</key>
-		<string>19 615 246 44 0 0 1152 848 </string>
-	</dict>
-	<key>IBFramework Version</key>
-	<string>291.0</string>
-	<key>IBGroupedObjects</key>
-	<dict/>
-	<key>IBLastGroupID</key>
-	<string>1</string>
-	<key>IBOpenObjects</key>
-	<array>
-		<integer>29</integer>
-	</array>
-	<key>IBSystem Version</key>
-	<string>6I32</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUT.nib/objects.nib has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTClipboard.nib/classes.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-{
-    IBClasses = (
-        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
-        {
-            ACTIONS = {toggleWindow = id; }; 
-            CLASS = GLUTClipboardController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {_infoText = id; _scrollView = id; }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTClipboard.nib/info.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
-<plist version="0.9">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>63 221 356 240 0 0 1600 1178 </string>
-	<key>IBFramework Version</key>
-	<string>263.2</string>
-	<key>IBSystem Version</key>
-	<string>5S41</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTClipboard.nib/objects.nib has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTPreferences.nib/classes.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {save = id; saveAs = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {
-                cancel = id; 
-                joyAssign = id; 
-                joyDevice = id; 
-                joyElement = id; 
-                joyInvert = id; 
-                launchDebugMode = id; 
-                launchGamemodeCaptureSingle = id; 
-                launchIconic = id; 
-                launchUseCurrWD = id; 
-                launchUseExtDesktop = id; 
-                launchUseMacOSCoords = id; 
-                mouseEanbleEmulation = id; 
-                mouseMiddleMenu = id; 
-                mouseRightMenu = id; 
-                ok = id; 
-                spaceAssign = id; 
-                spaceDevice = id; 
-                spaceElement = id; 
-                spaceInvert = id; 
-            }; 
-            CLASS = GLUTPreferencesController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                joyAssign = NSButton; 
-                joyAssignNote = NSTextField; 
-                joyAssignWarningIcon = NSImageView; 
-                joyDeviceMenu = NSPopUpButton; 
-                joyElement = NSTextField; 
-                joyInputMenu = NSPopUpButton; 
-                joyInverted = NSButton; 
-                launchDebugMode = NSButton; 
-                launchFadeTime = NSTextField; 
-                launchGamemodeCaptureSingle = NSButton; 
-                launchIconic = NSButton; 
-                launchInitHeight = NSTextField; 
-                launchInitWidth = NSTextField; 
-                launchInitX = NSTextField; 
-                launchInitY = NSTextField; 
-                launchMenuIdle = NSTextField; 
-                launchSyncToVBL = NSButton; 
-                launchUseCurrWD = NSButton; 
-                launchUseExtendedDesktop = NSButton; 
-                launchUseMacOSXCoords = NSButton; 
-                mouseAssignWarningIcon = NSImageView; 
-                mouseAssignWarningText = NSTextField; 
-                mouseDetected = NSTextField; 
-                mouseEmulation = NSButton; 
-                mouseMiddleConfigMenu = NSPopUpButton; 
-                mouseRightConfigMenu = NSPopUpButton; 
-                prefsTabView = NSTabView; 
-                spaceAssign = NSButton; 
-                spaceAssignNote = NSTextField; 
-                spaceAssignWarningIcon = NSImageView; 
-                spaceDeviceMenu = NSPopUpButton; 
-                spaceElement = NSTextField; 
-                spaceInputMenu = NSPopUpButton; 
-                spaceInverted = NSButton; 
-            }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTPreferences.nib/info.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>16 329 410 240 0 0 1920 1178 </string>
-	<key>IBFramework Version</key>
-	<string>439.0</string>
-	<key>IBOpenObjects</key>
-	<array>
-		<integer>205</integer>
-	</array>
-	<key>IBSystem Version</key>
-	<string>8G32</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTPreferences.nib/objects.nib has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/GLUTUI.strings has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/English.lproj/InfoPlist.strings has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/Info.plist	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>GLUT</string>
-	<key>CFBundleGetInfoString</key>
-	<string>3.4.0, Copyright (c) 2001-2008 Apple Inc., All Rights Reserved</string>
-	<key>CFBundleIdentifier</key>
-	<string>com.apple.glut</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundlePackageType</key>
-	<string>FMWK</string>
-	<key>CFBundleShortVersionString</key>
-	<string>3.4.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>GLUT-3.4.0</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/blankCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/bottomCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/bottomleftCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/bottomrightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/crossCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/cycleCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/destroyCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/fingerCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/helpCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/leftCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/leftRightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/rightArrowCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/rightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/sprayCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/topCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/topleftCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/toprightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/upDownCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Resources/waitCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/GLUT has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/copy.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-
-/*
- *
- * Written By Linas Vepstas November 1991 
- */
-
-
-#define COPY_THREE_WORDS(A,B) {						\
-	struct three_words { int a, b, c, };				\
-	*(struct three_words *) (A) = *(struct three_words *) (B);	\
-}
-
-#define COPY_FOUR_WORDS(A,B) {						\
-	struct four_words { int a, b, c, d, };				\
-	*(struct four_words *) (A) = *(struct four_words *) (B);	\
-}
-
-/* ============================================================= */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/extrude.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-
-/*
- * extrude.h
- *
- * FUNCTION:
- * prototypes for privately used subroutines for the tubing library
- *
- * HISTORY:
- * Linas Vepstas 1991
- */
- 
-#include "port.h" /* for gleDouble */
-
-#ifndef M_PI
-#define M_PI  3.14159265358979323846
-#endif
-
-/* ============================================================ */
-/* 
- * Provides choice of calling subroutine, vs. invoking macro.
- * Basically, inlines the source, or not.
- * Trades performance for executable size.
- */
-
-#define INLINE_INTERSECT
-#ifdef INLINE_INTERSECT
-#define INNERSECT(sect,p,n,v1,v2) { INTERSECT(sect,p,n,v1,v2); }
-#else
-#define INNERSECT(sect,p,n,v1,v2) intersect(sect,p,n,v1,v2)
-#endif /* INLINE_INTERSECT */
-
-/* ============================================================ */
-/* The folowing defines give a kludgy way of accessing the qmesh primitive */
-
-/*
-#define bgntmesh _emu_qmesh_bgnqmesh
-#define endtmesh _emu_qmesh_endqmesh
-#define c3f _emu_qmesh_c3f
-#define n3f _emu_qmesh_n3f
-#define v3f _emu_qmesh_v3f
-*/
-
-/* ============================================================ */
-
-extern void up_sanity_check (gleDouble up[3],      /* up vector for contour */
-                      int npoints,              /* numpoints in poly-line */
-                      gleDouble point_array[][3]);   /* polyline */
-
-
-extern void draw_raw_style_end_cap (int ncp,     /* number of contour points */
-                             gleDouble contour[][2],     /* 2D contour */
-                             gleDouble zval,             /* where to draw cap */
-                             int frontwards);    /* front or back cap */
-
-extern void draw_round_style_cap_callback (int iloop,
-                                  double cap[][3],
-                                  float face_color[3],
-                                  gleDouble cut_vector[3],
-                                  gleDouble bisect_vector[3],
-                                  double norms[][3],
-                                  int frontwards);
-
-extern void draw_angle_style_front_cap (int ncp,
-                           gleDouble bi[3],
-                           gleDouble point_array[][3]);
-
-extern void extrusion_raw_join (int ncp,        /* number of contour points */
-                         gleDouble contour[][2],    /* 2D contour */
-                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
-                         gleDouble up[3],           /* up vector for contour */
-                         int npoints,           /* numpoints in poly-line */
-                         gleDouble point_array[][3],        /* polyline */
-                         float color_array[][3],        /* color of polyline */
-                         gleDouble xform_array[][2][3]);  /* 2D contour xforms */
-
-
-extern void extrusion_round_or_cut_join (int ncp, /* number of contour points */
-                         gleDouble contour[][2],    /* 2D contour */
-                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
-                           gleDouble up[3],         /* up vector for contour */
-                           int npoints,         /* numpoints in poly-line */
-                           gleDouble point_array[][3],      /* polyline */
-                           float color_array[][3],      /* color of polyline */
-                           gleDouble xform_array[][2][3]);  /* 2D contour xforms */
-
-
-extern void extrusion_angle_join (int ncp,      /* number of contour points */
-                         gleDouble contour[][2],    /* 2D contour */
-                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
-                           gleDouble up[3],         /* up vector for contour */
-                           int npoints,         /* numpoints in poly-line */
-                           gleDouble point_array[][3],      /* polyline */
-                           float color_array[][3],      /* color of polyline */
-                           gleDouble xform_array[][2][3]);  /* 2D contour xforms */
-
-/* -------------------------- end of file -------------------------------- */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glsmap.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-#ifndef __glsmap_h__
-#define __glsmap_h__
-
-/* Copyright (c) Mark J. Kilgard, 1998.  */
-
-/* This program is freely distributable without licensing fees
-   and is provided without guarantee or warrantee expressed or
-   implied. This program is -not- in the public domain. */
-
-#if defined(_WIN32)
-
-/* Try hard to avoid including <windows.h> to avoid name space pollution,
-   but Win32's <GL/gl.h> needs APIENTRY and WINGDIAPI defined properly. */
-# if 0
-#  define  WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-# else
-   /* XXX This is from Win32's <windef.h> */
-#  ifndef APIENTRY
-#   if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
-#    define APIENTRY    __stdcall
-#   else
-#    define APIENTRY
-#   endif
-#  endif
-#  ifndef CALLBACK
-    /* XXX This is from Win32's <winnt.h> */
-#   if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
-#    define CALLBACK __stdcall
-#   else
-#    define CALLBACK
-#   endif
-#  endif
-   /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
-#  ifndef WINGDIAPI
-#   define WINGDIAPI __declspec(dllimport)
-#  endif
-   /* XXX This is from Win32's <ctype.h> */
-#  ifndef _WCHAR_T_DEFINED
-typedef unsigned short wchar_t;
-#   define _WCHAR_T_DEFINED
-#  endif
-# endif
-
-#pragma warning (disable:4244)	/* Disable bogus conversion warnings. */
-#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-
-#endif /* _WIN32 */
-
-#include <OpenGL/gl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-        SMAP_CLEAR_SMAP_TEXTURE = 0x1,
-        SMAP_GENERATE_VIEW_MIPMAPS = 0x2,
-        SMAP_GENERATE_SMAP_MIPMAPS = 0x4,
-        SMAP_GENERATE_MIPMAPS = 0x6  /* both of above */
-} SphereMapFlags;
-
-/* Cube view enumerants. */
-enum {
-	SMAP_FRONT = 0,
-	SMAP_TOP = 1,
-	SMAP_BOTTOM = 2,
-	SMAP_LEFT = 3,
-	SMAP_RIGHT = 4,
-	SMAP_BACK = 5
-};
-
-typedef struct _SphereMap SphereMap;
-
-extern SphereMap *smapCreateSphereMap(SphereMap *shareSmap);
-extern void smapDestroySphereMap(SphereMap *smap);
-
-extern void smapConfigureSphereMapMesh(SphereMap *smap, int steps, int rings, int edgeExtend);
-
-extern void smapSetSphereMapTexObj(SphereMap *smap, GLuint texobj);
-extern void smapSetViewTexObj(SphereMap *smap, GLuint texobj);
-extern void smapSetViewTexObjs(SphereMap *smap, GLuint texobjs[6]);
-extern void smapGetSphereMapTexObj(SphereMap *smap, GLuint *texobj);
-extern void smapGetViewTexObj(SphereMap *smap, GLuint *texobj);
-extern void smapGetViewTexObjs(SphereMap *smap, GLuint texobjs[6]);
-
-extern void smapSetFlags(SphereMap *smap, SphereMapFlags flags);
-extern void smapGetFlags(SphereMap *smap, SphereMapFlags *flags);
-
-extern void smapSetViewOrigin(SphereMap *smap, GLint x, GLint y);
-extern void smapSetSphereMapOrigin(SphereMap *smap, GLint x, GLint y);
-extern void smapGetViewOrigin(SphereMap *smap, GLint *x, GLint *y);
-extern void smapGetSphereMapOrigin(SphereMap *smap, GLint *x, GLint *y);
-
-extern void smapSetEye(SphereMap *smap, GLfloat eyex, GLfloat eyey,	GLfloat eyez);
-extern void smapSetEyeVector(SphereMap *smap, GLfloat *eye);
-extern void smapSetUp(SphereMap *smap, GLfloat upx, GLfloat upy, GLfloat upz);
-extern void smapSetUpVector(SphereMap *smap, GLfloat *up);
-extern void smapSetObject(SphereMap *smap, GLfloat objx, GLfloat objy, GLfloat objz);
-extern void smapSetObjectVector(SphereMap *smap, GLfloat *obj);
-extern void smapGetEye(SphereMap *smap, GLfloat *eyex, GLfloat *eyey, GLfloat *eyez);
-extern void smapGetEyeVector(SphereMap *smap, GLfloat *eye);
-extern void smapGetUp(SphereMap *smap, GLfloat *upx, GLfloat *upy, GLfloat *upz);
-extern void smapGetUpVector(SphereMap *smap, GLfloat *up);
-extern void smapGetObject(SphereMap *smap, GLfloat *objx, GLfloat *objy, GLfloat *objz);
-extern void smapGetObjectVector(SphereMap *smap, GLfloat *obj);
-
-extern void smapSetNearFar(SphereMap *smap, GLfloat viewNear, GLfloat viewFar);
-extern void smapGetNearFar(SphereMap *smap, GLfloat *viewNear, GLfloat *viewFar);
-
-extern void smapSetSphereMapTexDim(SphereMap *smap, GLsizei texdim);
-extern void smapSetViewTexDim(SphereMap *smap, GLsizei texdim);
-extern void smapGetSphereMapTexDim(SphereMap *smap, GLsizei *texdim);
-extern void smapGetViewTexDim(SphereMap *smap, GLsizei *texdim);
-
-extern void smapSetContextData(SphereMap *smap, void *context);
-extern void smapGetContextData(SphereMap *smap, void **context);
-
-extern void smapSetPositionLightsFunc(SphereMap *smap, void (*positionLights)(int view, void *context));
-extern void smapSetDrawViewFunc(SphereMap *smap, void (*drawView)(int view, void *context));
-extern void smapGetPositionLightsFunc(SphereMap *smap, void (**positionLights)(int view, void *context));
-extern void smapGetDrawViewFunc(SphereMap *smap, void (**drawView)(int view, void *context));
-
-extern void smapGenViewTex(SphereMap *smap, int view);
-extern void smapGenViewTexs(SphereMap *smap);
-extern void smapGenSphereMapFromViewTexs(SphereMap *smap);
-extern void smapGenSphereMap(SphereMap *smap);
-extern void smapGenSphereMapWithOneViewTex(SphereMap *smap);
-
-extern int smapRvecToSt(float rvec[3], float st[2]);
-extern void smapStToRvec(float *st, float *rvec);
-
-#ifdef __cplusplus
-}
-
-#endif
-#endif /* __glsmap_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glsmapint.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-#ifndef __glsmapint_h__
-#define __glsmapint_h__
-
-/* Copyright (c) Mark J. Kilgard, 1998. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#include "glsmap.h"
-
-enum { X = 0, Y = 1, Z = 2 };
-
-#define INITFACE(mesh) \
-	int steps = mesh->steps; \
-	int sqsteps = mesh->steps * mesh->steps
-
-#define FACE(side,y,x) \
-	mesh->face[(side)*sqsteps + (y)*steps + (x)]
-
-#define FACExy(side,i,j) \
-	(&FACE(side,i,j).x)
-
-#define FACEst(side,i,j) \
-	(&FACE(side,i,j).s)
-
-#define INITBACK(mesh) \
-	int allrings = mesh->rings + mesh->edgeExtend; \
-	int ringedspokes = allrings * mesh->steps
-
-#define BACK(edge,ring,spoke) \
-	mesh->back[(edge)*ringedspokes + (ring)*mesh->steps + (spoke)]
-
-#define BACKxy(edge,ring,spoke) \
-	(&BACK(edge,ring,spoke).x)
-
-#define BACKst(edge,ring,spoke) \
-	(&BACK(edge,ring,spoke).s)
-
-typedef struct _STXY {
-	GLfloat s, t;
-	GLfloat x, y;
-} STXY;
-
-typedef struct _SphereMapMesh {
-
-	int refcnt;
-
-	int steps;
-	int rings;
-	int edgeExtend;
-
-	STXY *face;
-	STXY *back;
-
-} SphereMapMesh;
-
-struct _SphereMap {
-
-	/* Shared sphere map mesh vertex data. */
-	SphereMapMesh *mesh;
-
-	/* Texture object ids. */
-	GLuint smapTexObj;
-	GLuint viewTexObjs[6];
-	GLuint viewTexObj;
-
-        /* Flags */
-        SphereMapFlags flags;
-
-	/* Texture dimensions must be a power of two. */
-	int viewTexDim;  /* view texture dimension */
-	int smapTexDim;  /* sphere map texture dimension */
-
-	/* Viewport origins for view and sphere map rendering. */
-	int viewOrigin[2];
-	int smapOrigin[2];
-
-	/* Viewing vectors. */
-	GLfloat eye[3];
-	GLfloat up[3];
-	GLfloat obj[3];
-
-	/* Projection parameters. */
-	GLfloat viewNear;
-	GLfloat viewFar;
-
-	/* Rendering callbacks. */
-	void (*positionLights)(int view, void *context);
-	void (*drawView)(int view, void *context);
-
-	/* Application specified callback data. */
-	void *context;
-
-};
-
-/* Library internal routines. */
-extern void __smapDrawSphereMapMeshSide(SphereMapMesh *mesh, int side);
-extern void __smapDrawSphereMapMeshBack(SphereMapMesh *mesh);
-extern void __smapValidateSphereMapMesh(SphereMapMesh *mesh);
-
-#endif /* __glsmapint_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glut.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,644 +0,0 @@
-#ifndef __glut_h__
-#define __glut_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */
-
-/* This program is freely distributable without licensing fees  and is
-   provided without guarantee or warrantee expressed or  implied. This
-   program is -not- in the public domain. */
-
-#if defined(_WIN32)
-
-/* GLUT 3.7 now tries to avoid including <windows.h>
-   to avoid name space pollution, but Win32's <GL/gl.h> 
-   needs APIENTRY and WINGDIAPI defined properly. */
-# if 0
-#  define  WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-# else
-   /* XXX This is from Win32's <windef.h> */
-#  ifndef APIENTRY
-#   define GLUT_APIENTRY_DEFINED
-#   if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
-#    define APIENTRY    __stdcall
-#   else
-#    define APIENTRY
-#   endif
-#  endif
-   /* XXX This is from Win32's <winnt.h> */
-#  ifndef CALLBACK
-#   if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
-#    define CALLBACK __stdcall
-#   else
-#    define CALLBACK
-#   endif
-#  endif
-   /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
-#  ifndef WINGDIAPI
-#   define GLUT_WINGDIAPI_DEFINED
-#   define WINGDIAPI __declspec(dllimport)
-#  endif
-   /* XXX This is from Win32's <ctype.h> */
-#  ifndef _WCHAR_T_DEFINED
-typedef unsigned short wchar_t;
-#   define _WCHAR_T_DEFINED
-#  endif
-# endif
-
-#pragma comment (lib, "winmm.lib")     /* link with Windows MultiMedia lib */
-#pragma comment (lib, "opengl32.lib")  /* link with Microsoft OpenGL lib */
-#pragma comment (lib, "glu32.lib")     /* link with OpenGL Utility lib */
-#pragma comment (lib, "glut32.lib")    /* link with Win32 GLUT lib */
-
-#pragma warning (disable:4244)	/* Disable bogus conversion warnings. */
-#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-
-#endif
-
-#if defined(__APPLE__) || defined(MACOSX)
-#include <AvailabilityMacros.h>
-#include <OpenGL/gl.h>
-#include <OpenGL/glu.h>
-#else
-#include <GL/gl.h>
-#include <GL/glu.h>
-#endif
-
-/* define APIENTRY and CALLBACK to null string if we aren't on Win32 */
-#if !defined(_WIN32)
-#define APIENTRY
-#define GLUT_APIENTRY_DEFINED
-#define CALLBACK
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- GLUT API revision history:
- 
- GLUT_API_VERSION is updated to reflect incompatible GLUT
- API changes (interface changes, semantic changes, deletions,
- or additions).
- 
- GLUT_API_VERSION=1  First public release of GLUT.  11/29/94
-
- GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
- extension.  Supports new input devices like tablet, dial and button
- box, and Spaceball.  Easy to query OpenGL extensions.
-
- GLUT_API_VERSION=3  glutMenuStatus added.
-
- GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
- glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
- video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
- glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
- glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
-
- GLUT_API_VERSION=5  glutGetProcAddress (added by BrianP)
-**/
-#ifndef GLUT_API_VERSION  /* allow this to be overriden */
-#define GLUT_API_VERSION		5
-#endif
-
-/**
- GLUT implementation revision history:
- 
- GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
- API revisions and implementation revisions (ie, bug fixes).
-
- GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
- GLUT Xlib-based implementation.  11/29/94
-
- GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
- GLUT Xlib-based implementation providing GLUT version 2 
- interfaces.
-
- GLUT_XLIB_IMPLEMENTATION=3  mjk's GLUT 2.2 images. 4/17/95
-
- GLUT_XLIB_IMPLEMENTATION=4  mjk's GLUT 2.3 images. 6/?/95
-
- GLUT_XLIB_IMPLEMENTATION=5  mjk's GLUT 3.0 images. 10/?/95
-
- GLUT_XLIB_IMPLEMENTATION=7  mjk's GLUT 3.1+ with glutWarpPoitner.  7/24/96
-
- GLUT_XLIB_IMPLEMENTATION=8  mjk's GLUT 3.1+ with glutWarpPoitner
- and video resize.  1/3/97
-
- GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
-
- GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release.
-
- GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
-
- GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support.
-
- GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface.
-
- GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa <GL/glut.h>
-**/
-#ifndef GLUT_XLIB_IMPLEMENTATION  /* Allow this to be overriden. */
-#define GLUT_XLIB_IMPLEMENTATION	15
-#endif
-
-/**
- MacOS X GLUT implementation revision history:
- 
- GLUT_MACOSX_IMPLEMENTATION is updated to reflect MacOS X
- specific GLUT API revisions and implementation revisions
- (ie, bug fixes).
-
- GLUT_MACOSX_IMPLEMENTATION=1  glutSurfaceTexture.
-
- GLUT_MACOSX_IMPLEMENTATION=2  glutWMCloseFunc, glutCheckLoop.
-  
-**/
-#ifndef GLUT_MACOSX_IMPLEMENTATION  /* Allow this to be overriden. */
-#define GLUT_MACOSX_IMPLEMENTATION	2
-#endif
-
-/* Display mode bit masks. */
-#define GLUT_RGB			0
-#define GLUT_RGBA			GLUT_RGB
-#define GLUT_INDEX			1
-#define GLUT_SINGLE			0
-#define GLUT_DOUBLE			2
-#define GLUT_ACCUM			4
-#define GLUT_ALPHA			8
-#define GLUT_DEPTH			16
-#define GLUT_STENCIL			32
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_MULTISAMPLE		128
-#define GLUT_STEREO			256
-#endif
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_LUMINANCE			512
-#endif
-#define GLUT_NO_RECOVERY    1024
-
-/* Mouse buttons. */
-#define GLUT_LEFT_BUTTON		0
-#define GLUT_MIDDLE_BUTTON		1
-#define GLUT_RIGHT_BUTTON		2
-
-/* Mouse button  state. */
-#define GLUT_DOWN			0
-#define GLUT_UP				1
-
-#if (GLUT_API_VERSION >= 2)
-/* function keys */
-#define GLUT_KEY_F1			1
-#define GLUT_KEY_F2			2
-#define GLUT_KEY_F3			3
-#define GLUT_KEY_F4			4
-#define GLUT_KEY_F5			5
-#define GLUT_KEY_F6			6
-#define GLUT_KEY_F7			7
-#define GLUT_KEY_F8			8
-#define GLUT_KEY_F9			9
-#define GLUT_KEY_F10			10
-#define GLUT_KEY_F11			11
-#define GLUT_KEY_F12			12
-/* directional keys */
-#define GLUT_KEY_LEFT			100
-#define GLUT_KEY_UP			101
-#define GLUT_KEY_RIGHT			102
-#define GLUT_KEY_DOWN			103
-#define GLUT_KEY_PAGE_UP		104
-#define GLUT_KEY_PAGE_DOWN		105
-#define GLUT_KEY_HOME			106
-#define GLUT_KEY_END			107
-#define GLUT_KEY_INSERT			108
-#endif
-
-/* Entry/exit  state. */
-#define GLUT_LEFT			0
-#define GLUT_ENTERED			1
-
-/* Menu usage  state. */
-#define GLUT_MENU_NOT_IN_USE		0
-#define GLUT_MENU_IN_USE		1
-
-/* Visibility  state. */
-#define GLUT_NOT_VISIBLE		0
-#define GLUT_VISIBLE			1
-
-/* Window status  state. */
-#define GLUT_HIDDEN			0
-#define GLUT_FULLY_RETAINED		1
-#define GLUT_PARTIALLY_RETAINED		2
-#define GLUT_FULLY_COVERED		3
-
-/* Color index component selection values. */
-#define GLUT_RED			0
-#define GLUT_GREEN			1
-#define GLUT_BLUE			2
-
-/* Layers for use. */
-#define GLUT_NORMAL			0
-#define GLUT_OVERLAY			1
-
-#if defined(_WIN32)
-/* Stroke font constants (use these in GLUT program). */
-#define GLUT_STROKE_ROMAN		((void*)0)
-#define GLUT_STROKE_MONO_ROMAN		((void*)1)
-
-/* Bitmap font constants (use these in GLUT program). */
-#define GLUT_BITMAP_9_BY_15		((void*)2)
-#define GLUT_BITMAP_8_BY_13		((void*)3)
-#define GLUT_BITMAP_TIMES_ROMAN_10	((void*)4)
-#define GLUT_BITMAP_TIMES_ROMAN_24	((void*)5)
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_BITMAP_HELVETICA_10	((void*)6)
-#define GLUT_BITMAP_HELVETICA_12	((void*)7)
-#define GLUT_BITMAP_HELVETICA_18	((void*)8)
-#endif
-#else
-/* Stroke font opaque addresses (use constants instead in source code). */
-extern void *glutStrokeRoman;
-extern void *glutStrokeMonoRoman;
-
-/* Stroke font constants (use these in GLUT program). */
-#define GLUT_STROKE_ROMAN		(&glutStrokeRoman)
-#define GLUT_STROKE_MONO_ROMAN		(&glutStrokeMonoRoman)
-
-/* Bitmap font opaque addresses (use constants instead in source code). */
-extern void *glutBitmap9By15;
-extern void *glutBitmap8By13;
-extern void *glutBitmapTimesRoman10;
-extern void *glutBitmapTimesRoman24;
-extern void *glutBitmapHelvetica10;
-extern void *glutBitmapHelvetica12;
-extern void *glutBitmapHelvetica18;
-
-/* Bitmap font constants (use these in GLUT program). */
-#define GLUT_BITMAP_9_BY_15		(&glutBitmap9By15)
-#define GLUT_BITMAP_8_BY_13		(&glutBitmap8By13)
-#define GLUT_BITMAP_TIMES_ROMAN_10	(&glutBitmapTimesRoman10)
-#define GLUT_BITMAP_TIMES_ROMAN_24	(&glutBitmapTimesRoman24)
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_BITMAP_HELVETICA_10	(&glutBitmapHelvetica10)
-#define GLUT_BITMAP_HELVETICA_12	(&glutBitmapHelvetica12)
-#define GLUT_BITMAP_HELVETICA_18	(&glutBitmapHelvetica18)
-#endif
-#endif
-
-/* glutGet parameters. */
-#define GLUT_WINDOW_X			100
-#define GLUT_WINDOW_Y			101
-#define GLUT_WINDOW_WIDTH		102
-#define GLUT_WINDOW_HEIGHT		103
-#define GLUT_WINDOW_BUFFER_SIZE		104
-#define GLUT_WINDOW_STENCIL_SIZE	105
-#define GLUT_WINDOW_DEPTH_SIZE		106
-#define GLUT_WINDOW_RED_SIZE		107
-#define GLUT_WINDOW_GREEN_SIZE		108
-#define GLUT_WINDOW_BLUE_SIZE		109
-#define GLUT_WINDOW_ALPHA_SIZE		110
-#define GLUT_WINDOW_ACCUM_RED_SIZE	111
-#define GLUT_WINDOW_ACCUM_GREEN_SIZE	112
-#define GLUT_WINDOW_ACCUM_BLUE_SIZE	113
-#define GLUT_WINDOW_ACCUM_ALPHA_SIZE	114
-#define GLUT_WINDOW_DOUBLEBUFFER	115
-#define GLUT_WINDOW_RGBA		116
-#define GLUT_WINDOW_PARENT		117
-#define GLUT_WINDOW_NUM_CHILDREN	118
-#define GLUT_WINDOW_COLORMAP_SIZE	119
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_WINDOW_NUM_SAMPLES		120
-#define GLUT_WINDOW_STEREO		121
-#endif
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_WINDOW_CURSOR		122
-#endif
-#define GLUT_SCREEN_WIDTH		200
-#define GLUT_SCREEN_HEIGHT		201
-#define GLUT_SCREEN_WIDTH_MM		202
-#define GLUT_SCREEN_HEIGHT_MM		203
-#define GLUT_MENU_NUM_ITEMS		300
-#define GLUT_DISPLAY_MODE_POSSIBLE	400
-#define GLUT_INIT_WINDOW_X		500
-#define GLUT_INIT_WINDOW_Y		501
-#define GLUT_INIT_WINDOW_WIDTH		502
-#define GLUT_INIT_WINDOW_HEIGHT		503
-#define GLUT_INIT_DISPLAY_MODE		504
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_ELAPSED_TIME		700
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-#define GLUT_WINDOW_FORMAT_ID		123
-#endif
-
-#if (GLUT_API_VERSION >= 2)
-/* glutDeviceGet parameters. */
-#define GLUT_HAS_KEYBOARD		600
-#define GLUT_HAS_MOUSE			601
-#define GLUT_HAS_SPACEBALL		602
-#define GLUT_HAS_DIAL_AND_BUTTON_BOX	603
-#define GLUT_HAS_TABLET			604
-#define GLUT_NUM_MOUSE_BUTTONS		605
-#define GLUT_NUM_SPACEBALL_BUTTONS	606
-#define GLUT_NUM_BUTTON_BOX_BUTTONS	607
-#define GLUT_NUM_DIALS			608
-#define GLUT_NUM_TABLET_BUTTONS		609
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-#define GLUT_DEVICE_IGNORE_KEY_REPEAT   610
-#define GLUT_DEVICE_KEY_REPEAT          611
-#define GLUT_HAS_JOYSTICK		612
-#define GLUT_OWNS_JOYSTICK		613
-#define GLUT_JOYSTICK_BUTTONS		614
-#define GLUT_JOYSTICK_AXES		615
-#define GLUT_JOYSTICK_POLL_RATE		616
-#endif
-
-#if (GLUT_API_VERSION >= 3)
-/* glutLayerGet parameters. */
-#define GLUT_OVERLAY_POSSIBLE           800
-#define GLUT_LAYER_IN_USE		801
-#define GLUT_HAS_OVERLAY		802
-#define GLUT_TRANSPARENT_INDEX		803
-#define GLUT_NORMAL_DAMAGED		804
-#define GLUT_OVERLAY_DAMAGED		805
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-/* glutVideoResizeGet parameters. */
-#define GLUT_VIDEO_RESIZE_POSSIBLE	900
-#define GLUT_VIDEO_RESIZE_IN_USE	901
-#define GLUT_VIDEO_RESIZE_X_DELTA	902
-#define GLUT_VIDEO_RESIZE_Y_DELTA	903
-#define GLUT_VIDEO_RESIZE_WIDTH_DELTA	904
-#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA	905
-#define GLUT_VIDEO_RESIZE_X		906
-#define GLUT_VIDEO_RESIZE_Y		907
-#define GLUT_VIDEO_RESIZE_WIDTH		908
-#define GLUT_VIDEO_RESIZE_HEIGHT	909
-#endif
-
-/* glutUseLayer parameters. */
-#define GLUT_NORMAL			0
-#define GLUT_OVERLAY			1
-
-/* glutGetModifiers return mask. */
-#define GLUT_ACTIVE_SHIFT               1
-#define GLUT_ACTIVE_CTRL                2
-#define GLUT_ACTIVE_ALT                 4
-
-/* glutSetCursor parameters. */
-/* Basic arrows. */
-#define GLUT_CURSOR_RIGHT_ARROW		0
-#define GLUT_CURSOR_LEFT_ARROW		1
-/* Symbolic cursor shapes. */
-#define GLUT_CURSOR_INFO		2
-#define GLUT_CURSOR_DESTROY		3
-#define GLUT_CURSOR_HELP		4
-#define GLUT_CURSOR_CYCLE		5
-#define GLUT_CURSOR_SPRAY		6
-#define GLUT_CURSOR_WAIT		7
-#define GLUT_CURSOR_TEXT		8
-#define GLUT_CURSOR_CROSSHAIR		9
-/* Directional cursors. */
-#define GLUT_CURSOR_UP_DOWN		10
-#define GLUT_CURSOR_LEFT_RIGHT		11
-/* Sizing cursors. */
-#define GLUT_CURSOR_TOP_SIDE		12
-#define GLUT_CURSOR_BOTTOM_SIDE		13
-#define GLUT_CURSOR_LEFT_SIDE		14
-#define GLUT_CURSOR_RIGHT_SIDE		15
-#define GLUT_CURSOR_TOP_LEFT_CORNER	16
-#define GLUT_CURSOR_TOP_RIGHT_CORNER	17
-#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER	18
-#define GLUT_CURSOR_BOTTOM_LEFT_CORNER	19
-/* Inherit from parent window. */
-#define GLUT_CURSOR_INHERIT		100
-/* Blank cursor. */
-#define GLUT_CURSOR_NONE		101
-/* Fullscreen crosshair (if available). */
-#define GLUT_CURSOR_FULL_CROSSHAIR	102
-#endif
-
-/* GLUT initialization sub-API. */
-extern void APIENTRY glutInit(int *argcp, char **argv);
-extern void APIENTRY glutInitDisplayMode(unsigned int mode);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern void APIENTRY glutInitDisplayString(const char *string);
-#endif
-extern void APIENTRY glutInitWindowPosition(int x, int y);
-extern void APIENTRY glutInitWindowSize(int width, int height);
-extern void APIENTRY glutMainLoop(void);
-
-/* GLUT window sub-API. */
-extern int APIENTRY glutCreateWindow(const char *title);
-extern int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
-extern void APIENTRY glutDestroyWindow(int win);
-extern void APIENTRY glutPostRedisplay(void);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
-extern void APIENTRY glutPostWindowRedisplay(int win);
-#endif
-extern void APIENTRY glutSwapBuffers(void);
-extern int APIENTRY glutGetWindow(void);
-extern void APIENTRY glutSetWindow(int win);
-extern void APIENTRY glutSetWindowTitle(const char *title);
-extern void APIENTRY glutSetIconTitle(const char *title);
-extern void APIENTRY glutPositionWindow(int x, int y);
-extern void APIENTRY glutReshapeWindow(int width, int height);
-extern void APIENTRY glutPopWindow(void);
-extern void APIENTRY glutPushWindow(void);
-extern void APIENTRY glutIconifyWindow(void);
-extern void APIENTRY glutShowWindow(void);
-extern void APIENTRY glutHideWindow(void);
-#if (GLUT_API_VERSION >= 3)
-extern void APIENTRY glutFullScreen(void);
-extern void APIENTRY glutSetCursor(int cursor);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern void APIENTRY glutWarpPointer(int x, int y);
-#if (GLUT_MACOSX_IMPLEMENTATION >= 1)
-/* surface texturing API Mac OS X specific
-*  Note:
-*	glutSurfaceTexture has been deprecated, use GL_EXT_framebuffer_object
-*/
-#ifdef MAC_OS_X_VERSION_10_5
-extern void APIENTRY glutSurfaceTexture (GLenum target, GLenum internalformat, int surfacewin); AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
-#else
-extern void APIENTRY glutSurfaceTexture (GLenum target, GLenum internalformat, int surfacewin);
-#endif
-#endif
-#if (GLUT_MACOSX_IMPLEMENTATION >= 2)
-/* Mac OS X specific API */
-extern void APIENTRY glutWMCloseFunc(void (*func)(void));
-extern void APIENTRY glutCheckLoop(void);
-#endif
-#endif
-
-/* GLUT overlay sub-API. */
-extern void APIENTRY glutEstablishOverlay(void);
-extern void APIENTRY glutRemoveOverlay(void);
-extern void APIENTRY glutUseLayer(GLenum layer);
-extern void APIENTRY glutPostOverlayRedisplay(void);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
-extern void APIENTRY glutPostWindowOverlayRedisplay(int win);
-#endif
-extern void APIENTRY glutShowOverlay(void);
-extern void APIENTRY glutHideOverlay(void);
-#endif
-
-/* GLUT menu sub-API. */
-extern int APIENTRY glutCreateMenu(void (*)(int));
-extern void APIENTRY glutDestroyMenu(int menu);
-extern int APIENTRY glutGetMenu(void);
-extern void APIENTRY glutSetMenu(int menu);
-extern void APIENTRY glutAddMenuEntry(const char *label, int value);
-extern void APIENTRY glutAddSubMenu(const char *label, int submenu);
-extern void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
-extern void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
-extern void APIENTRY glutRemoveMenuItem(int item);
-extern void APIENTRY glutAttachMenu(int button);
-extern void APIENTRY glutDetachMenu(int button);
-
-/* GLUT window callback sub-API. */
-extern void APIENTRY glutDisplayFunc(void (*func)(void));
-extern void APIENTRY glutReshapeFunc(void (*func)(int width, int height));
-extern void APIENTRY glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
-extern void APIENTRY glutMouseFunc(void (*func)(int button, int state, int x, int y));
-extern void APIENTRY glutMotionFunc(void (*func)(int x, int y));
-extern void APIENTRY glutPassiveMotionFunc(void (*func)(int x, int y));
-extern void APIENTRY glutEntryFunc(void (*func)(int state));
-extern void APIENTRY glutVisibilityFunc(void (*func)(int state));
-extern void APIENTRY glutIdleFunc(void (*func)(void));
-extern void APIENTRY glutTimerFunc(unsigned int millis, void (*func)(int value), int value);
-extern void APIENTRY glutMenuStateFunc(void (*func)(int state));
-#if (GLUT_API_VERSION >= 2)
-extern void APIENTRY glutSpecialFunc(void (*func)(int key, int x, int y));
-extern void APIENTRY glutSpaceballMotionFunc(void (*func)(int x, int y, int z));
-extern void APIENTRY glutSpaceballRotateFunc(void (*func)(int x, int y, int z));
-extern void APIENTRY glutSpaceballButtonFunc(void (*func)(int button, int state));
-extern void APIENTRY glutButtonBoxFunc(void (*func)(int button, int state));
-extern void APIENTRY glutDialsFunc(void (*func)(int dial, int value));
-extern void APIENTRY glutTabletMotionFunc(void (*func)(int x, int y));
-extern void APIENTRY glutTabletButtonFunc(void (*func)(int button, int state, int x, int y));
-#if (GLUT_API_VERSION >= 3)
-extern void APIENTRY glutMenuStatusFunc(void (*func)(int status, int x, int y));
-extern void APIENTRY glutOverlayDisplayFunc(void (*func)(void));
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern void APIENTRY glutWindowStatusFunc(void (*func)(int state));
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-extern void APIENTRY glutKeyboardUpFunc(void (*func)(unsigned char key, int x, int y));
-extern void APIENTRY glutSpecialUpFunc(void (*func)(int key, int x, int y));
-extern void APIENTRY glutJoystickFunc(void (*func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
-#endif
-#endif
-#endif
-
-/* GLUT color index sub-API. */
-extern void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
-extern GLfloat APIENTRY glutGetColor(int ndx, int component);
-extern void APIENTRY glutCopyColormap(int win);
-
-/* GLUT state retrieval sub-API. */
-extern int APIENTRY glutGet(GLenum type);
-extern int APIENTRY glutDeviceGet(GLenum type);
-#if (GLUT_API_VERSION >= 2)
-/* GLUT extension support sub-API */
-extern int APIENTRY glutExtensionSupported(const char *name);
-#endif
-#if (GLUT_API_VERSION >= 3)
-extern int APIENTRY glutGetModifiers(void);
-extern int APIENTRY glutLayerGet(GLenum type);
-#endif
-#if (GLUT_API_VERSION >= 5)
-extern void * APIENTRY glutGetProcAddress(const char *procName);
-#endif
-
-/* GLUT font sub-API */
-extern void APIENTRY glutBitmapCharacter(void *font, int character);
-extern int APIENTRY glutBitmapWidth(void *font, int character);
-extern void APIENTRY glutStrokeCharacter(void *font, int character);
-extern int APIENTRY glutStrokeWidth(void *font, int character);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern int APIENTRY glutBitmapLength(void *font, const unsigned char *string);
-extern int APIENTRY glutStrokeLength(void *font, const unsigned char *string);
-#endif
-
-/* GLUT pre-built models sub-API */
-extern void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
-extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
-extern void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
-extern void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
-extern void APIENTRY glutWireCube(GLdouble size);
-extern void APIENTRY glutSolidCube(GLdouble size);
-extern void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
-extern void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
-extern void APIENTRY glutWireDodecahedron(void);
-extern void APIENTRY glutSolidDodecahedron(void);
-extern void APIENTRY glutWireTeapot(GLdouble size);
-extern void APIENTRY glutSolidTeapot(GLdouble size);
-extern void APIENTRY glutWireOctahedron(void);
-extern void APIENTRY glutSolidOctahedron(void);
-extern void APIENTRY glutWireTetrahedron(void);
-extern void APIENTRY glutSolidTetrahedron(void);
-extern void APIENTRY glutWireIcosahedron(void);
-extern void APIENTRY glutSolidIcosahedron(void);
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-/* GLUT video resize sub-API. */
-extern int APIENTRY glutVideoResizeGet(GLenum param);
-extern void APIENTRY glutSetupVideoResizing(void);
-extern void APIENTRY glutStopVideoResizing(void);
-extern void APIENTRY glutVideoResize(int x, int y, int width, int height);
-extern void APIENTRY glutVideoPan(int x, int y, int width, int height);
-
-/* GLUT debugging sub-API. */
-extern void APIENTRY glutReportErrors(void);
-#endif
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-/* GLUT device control sub-API. */
-/* glutSetKeyRepeat modes. */
-#define GLUT_KEY_REPEAT_OFF		0
-#define GLUT_KEY_REPEAT_ON		1
-#define GLUT_KEY_REPEAT_DEFAULT		2
-
-/* Joystick button masks. */
-#define GLUT_JOYSTICK_BUTTON_A		1
-#define GLUT_JOYSTICK_BUTTON_B		2
-#define GLUT_JOYSTICK_BUTTON_C		4
-#define GLUT_JOYSTICK_BUTTON_D		8
-
-extern void APIENTRY glutIgnoreKeyRepeat(int ignore);
-extern void APIENTRY glutSetKeyRepeat(int repeatMode);
-extern void APIENTRY glutForceJoystickFunc(void);
-
-/* GLUT game mode sub-API. */
-/* glutGameModeGet. */
-#define GLUT_GAME_MODE_ACTIVE           0
-#define GLUT_GAME_MODE_POSSIBLE         1
-#define GLUT_GAME_MODE_WIDTH            2
-#define GLUT_GAME_MODE_HEIGHT           3
-#define GLUT_GAME_MODE_PIXEL_DEPTH      4
-#define GLUT_GAME_MODE_REFRESH_RATE     5
-#define GLUT_GAME_MODE_DISPLAY_CHANGED  6
-
-extern void APIENTRY glutGameModeString(const char *string);
-extern int APIENTRY glutEnterGameMode(void);
-extern void APIENTRY glutLeaveGameMode(void);
-extern int APIENTRY glutGameModeGet(GLenum mode);
-#endif
-
-#ifdef __cplusplus
-}
-
-#endif
-
-#ifdef GLUT_APIENTRY_DEFINED
-# undef GLUT_APIENTRY_DEFINED
-# undef APIENTRY
-#endif
-
-#ifdef GLUT_WINGDIAPI_DEFINED
-# undef GLUT_WINGDIAPI_DEFINED
-# undef WINGDIAPI
-#endif
-
-#endif                  /* __glut_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glutbitmap.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#ifndef __glutbitmap_h__
-#define __glutbitmap_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#include "glut.h"
-
-typedef struct {
-  const GLsizei width;
-  const GLsizei height;
-  const GLfloat xorig;
-  const GLfloat yorig;
-  const GLfloat advance;
-  const GLubyte *bitmap;
-} BitmapCharRec, *BitmapCharPtr;
-
-typedef struct {
-  const char *name;
-  const int num_chars;
-  const int first;
-  const BitmapCharRec * const *ch;
-} BitmapFontRec, *BitmapFontPtr;
-
-typedef void *GLUTbitmapFont;
-
-#endif /* __glutbitmap_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glutf90.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-#ifndef __glutf90_h__
-#define __glutf90_h__
-
-/* Copyright (c) Mark J. Kilgard & Willam F. Mitchell, 1998. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-/* This header provides the binding interface for William Mitchell's
-   f90gl Fortran 90 GLUT binding.  Other GLUT language bindings
-   can and should use this interace. */
-
-/* I appreciate the guidance from William Mitchell
-   (mitchell@cam.nist.gov) in developing this friend interface
-   for use by the f90gl package.  See ../../README.fortran */
-
-#include <GLUT/glut.h>
-
-#ifndef GLUTCALLBACK
-	#define GLUTCALLBACK
-#endif
-#ifndef APIENTRY
-	#define APIENTRY
-#endif
-
-/* Which callback enumerants for the __glutSetFCB/__glutGetFCB routines. */
-/* NOTE These values are part of a binary interface for the f90gl Fortran
-   90 binding and so must NOT changes (additions are allowed). */
-
-/* GLUTwindow callbacks. */
-#define GLUT_FCB_DISPLAY         0    /* GLUTdisplayFCB */
-#define GLUT_FCB_RESHAPE         1    /* GLUTreshapeFCB */
-#define GLUT_FCB_MOUSE           2    /* GLUTmouseFCB */
-#define GLUT_FCB_MOTION          3    /* GLUTmotionFCB */
-#define GLUT_FCB_PASSIVE         4    /* GLUTpassiveFCB */
-#define GLUT_FCB_ENTRY           5    /* GLUTentryFCB */
-#define GLUT_FCB_KEYBOARD        6    /* GLUTkeyboardFCB */
-#define GLUT_FCB_KEYBOARD_UP     7    /* GLUTkeyboardFCB */
-#define GLUT_FCB_WINDOW_STATUS   8    /* GLUTwindowStatusFCB */
-#define GLUT_FCB_VISIBILITY      9    /* GLUTvisibilityFCB */
-#define GLUT_FCB_SPECIAL         10   /* GLUTspecialFCB */
-#define GLUT_FCB_SPECIAL_UP      11   /* GLUTspecialFCB */
-#define GLUT_FCB_BUTTON_BOX      12   /* GLUTbuttonBoxFCB */
-#define GLUT_FCB_DIALS           13   /* GLUTdialsFCB */
-#define GLUT_FCB_SPACE_MOTION    14   /* GLUTspaceMotionFCB */
-#define GLUT_FCB_SPACE_ROTATE    15   /* GLUTspaceRotateFCB */
-#define GLUT_FCB_SPACE_BUTTON    16   /* GLUTspaceButtonFCB */
-#define GLUT_FCB_TABLET_MOTION   17   /* GLUTtabletMotionFCB */
-#define GLUT_FCB_TABLET_BUTTON   18   /* GLUTtabletButtonFCB */
-#define GLUT_FCB_JOYSTICK        19   /* GLUTjoystickFCB */
-#define GLUT_FCB_WMCLOSE         20   /* GLUTwmcloseFCB */
-/* Non-GLUTwindow callbacks. */
-#define GLUT_FCB_OVERLAY_DISPLAY 100  /* GLUTdisplayFCB */
-#define GLUT_FCB_SELECT          101  /* GLUTselectFCB */
-#define GLUT_FCB_TIMER           102  /* GLUTtimerFCB */
-
-/* GLUT Fortran callback function types. */
-typedef void (GLUTCALLBACK *GLUTdisplayFCB) (void);
-typedef void (GLUTCALLBACK *GLUTwmcloseFCB) (void);
-typedef void (GLUTCALLBACK *GLUTreshapeFCB) (int *, int *);
-/* NOTE the pressed key is int, not unsigned char for Fortran! */
-typedef void (GLUTCALLBACK *GLUTkeyboardFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTmouseFCB) (int *, int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTmotionFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTpassiveFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTentryFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTwindowStatusFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTvisibilityFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTspecialFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTbuttonBoxFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTdialsFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceMotionFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceRotateFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceButtonFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTtabletMotionFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTtabletButtonFCB) (int *, int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTjoystickFCB) (unsigned int *buttonMask, int *x, int *y, int *z);
-
-typedef void (GLUTCALLBACK *GLUTselectFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTtimerFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTmenuStateFCB) (int *);  /* DEPRICATED. */
-typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTidleFCB) (void);
-
-/* Functions that set and return Fortran callback functions. */
-extern void* APIENTRY __glutGetFCB(int which);
-extern void APIENTRY __glutSetFCB(int which, void *func);
-
-#endif  /* __glutf90_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/glutstroke.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#ifndef __glutstroke_h__
-#define __glutstroke_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#if defined(_WIN32)
-#pragma warning (disable:4244)  /* disable bogus conversion warnings */
-#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-#endif
-
-typedef struct {
-  float x;
-  float y;
-} CoordRec, *CoordPtr;
-
-typedef struct {
-  int num_coords;
-  const CoordRec *coord;
-} StrokeRec, *StrokePtr;
-
-typedef struct {
-  int num_strokes;
-  const StrokeRec *stroke;
-  float center;
-  float right;
-} StrokeCharRec, *StrokeCharPtr;
-
-typedef struct {
-  const char *name;
-  int num_chars;
-  const StrokeCharRec *ch;
-  float top;
-  float bottom;
-} StrokeFontRec, *StrokeFontPtr;
-
-typedef void *GLUTstrokeFont;
-
-#endif /* __glutstroke_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/gutil.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-
-/*
- * gutil.h
- *
- * FUNCTION:
- * Provide utilities that allow rotation to occur 
- * around any axis.
- * 
- * HISTORY:
- * created by Linas Vepstas  1990
- * added single & double precision, June 1991, Linas Vepstas
- */
-
-#ifndef __GUTIL_H__
-#define __GUTIL_H__
-
-#ifdef __GUTIL_DOUBLE
-#define gutDouble double
-#else
-#define gutDouble float  
-#endif
-
-
-#ifdef _NO_PROTO		/* NO ANSI C PROTOTYPING */
-
-/* Rotation Utilities */
-extern void rot_axis_f ();
-extern void rot_about_axis_f ();
-extern void rot_omega_f ();
-extern void urot_axis_f ();
-extern void urot_about_axis_f ();
-extern void urot_omega_f ();
-
-/* double-precision versions */
-extern void rot_axis_d ();
-extern void rot_about_axis_d ();
-extern void rot_omega_d ();
-extern void urot_axis_d ();
-extern void urot_about_axis_d ();
-extern void urot_omega_d ();
-
-/* viewpoint functions */
-extern void uview_direction_d ();
-extern void uview_direction_f ();
-extern void uviewpoint_d ();
-extern void uviewpoint_f ();
-
-#else /* _NO_PROTO */		/* ANSI C PROTOTYPING */
-
-/* Rotation Utilities */
-extern void rot_axis_f (float omega, float axis[3]);
-extern void rot_about_axis_f (float angle, float axis[3]);
-extern void rot_omega_f (float axis[3]);
-extern void urot_axis_f (float m[4][4], float omega, float axis[3]);
-extern void urot_about_axis_f (float m[4][4], float angle, float axis[3]);
-extern void urot_omega_f (float m[4][4], float axis[3]);
-
-/* double-precision versions */
-extern void rot_axis_d (double omega, double axis[3]);
-extern void rot_about_axis_d (double angle, double axis[3]);
-extern void rot_omega_d (double axis[3]);
-extern void urot_axis_d (double m[4][4], double omega, double axis[3]);
-extern void urot_about_axis_d (double m[4][4], double angle, double axis[3]);
-extern void urot_omega_d (double m[4][4], double axis[3]);
-
-/* viewpoint functions */
-extern void uview_direction_d (double m[4][4],		/* returned */
-                        double v21[3],		/* input */
-                        double up[3]);		/* input */
-
-extern void uview_direction_f (float m[4][4],		/* returned */
-                        float v21[3],		/* input */
-                        float up[3]);		/* input */
-
-extern void uviewpoint_d (double m[4][4],		/* returned */
-                   double v1[3],		/* input */
-                   double v2[3],		/* input */
-                   double up[3]);		/* input */
-
-extern void uviewpoint_f (float m[4][4],		/* returned */
-                   float v1[3],		/* input */
-                   float v2[3],		/* input */
-                   float up[3]);		/* input */
-
-#endif /* _NO_PROTO */
-
-#endif /* _GUTIL_H__ */
-
-/* ------------------- end of file ---------------------- */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/intersect.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +0,0 @@
-/*
- * FUNCTION:
- * This file contains a number of utilities useful to 3D graphics in
- * general, and to the generation of tubing and extrusions in particular
- * 
- * HISTORY:
- * Written by Linas Vepstas, August 1991
- * Updated to correctly handle degenerate cases, Linas,  February 1993 
- */
-
-#include <math.h>
-#include "port.h"
-#include "vvector.h"
-
-#define BACKWARDS_INTERSECT (2)
-
-/* ========================================================== */
-/*
- * the Degenerate_Tolerance token represents the greatest amount by
- * which different scales in a graphics environment can differ before
- * they should be considered "degenerate".   That is, when one vector is
- * a million times longer than another, changces are that the second will
- * be less than a pixel int, and therefore was probably meant to be
- * degenerate (by the CAD package, etc.)  But what should this tolerance
- * be?  At least 1 in onethousand (since screen sizes are 1K pixels), but
- * les than 1 in 4 million (since this is the limit of single-precision
- * floating point accuracy).  Of course, if double precision were used,
- * then the tolerance could be increased.
- * 
- * Potentially, this naive assumption could cause problems if the CAD
- * package attempts to zoom in on small details, and turns out, certain
- * points should not hvae been degenerate.  The problem presented here
- * is that the tolerance could run out before single-precision ran
- * out, and so the CAD packages would perceive this as a "bug".
- * One alternative is to fiddle around & try to tighten the tolerance.
- * However, the right alternative is to code the graphics pipeline in
- * double-precision (and tighten the tolerance).
- *
- * By the way, note that Degernate Tolerance is a "dimensionless"
- * quantitiy -- it has no units -- it does not measure feet, inches,
- * millimeters or pixels.  It is used only in the computations of ratios
- * and relative lengths.
- */
-
-/* 
- * Right now, the tolerance is set to 2 parts in a million, which
- * corresponds to a 19-bit distinction of mantissas. Note that
- * single-precsion numbers have 24 bit mantissas.
- */
-
-#define DEGENERATE_TOLERANCE   (0.000002)
-
-/* ========================================================== */
-/* 
- * The macro and subroutine INTERSECT are designed to compute the
- * intersection of a line (defined by the points v1 and v2) and a plane
- * (defined as plane which is normal to the vector n, and contains the
- * point p).  Both return the point sect, which is the point of
- * interesection.
- *
- * This MACRO attemps to be fairly robust by checking for a divide by
- * zero.
- */
-
-/* ========================================================== */
-/*
- * HACK ALERT
- * The intersection parameter t has the nice property that if t>1,
- * then the intersection is "in front of" p1, and if t<0, then the
- * intersection is "behind" p2. Unfortunately, as the intersecting plane
- * and the line become parallel, t wraps through infinity -- i.e. t can
- * become so large that t becomes "greater than infinity" and comes back 
- * as a negative number (i.e. winding number hopped by one unit).  We 
- * have no way of detecting this situation without adding gazzillions 
- * of lines of code of topological algebra to detect the winding number;
- * and this would be incredibly difficult, and ruin performance.
- * 
- * Thus, we've installed a cheap hack for use by the "cut style" drawing
- * routines. If t proves to be a large negative number (more negative
- * than -5), then we assume that t was positive and wound through
- * infinity.  This makes most cuts look good, without introducing bogus
- * cuts at infinity.
- */
-/* ========================================================== */
-
-#define INTERSECT(sect,p,n,v1,v2)			\
-{							\
-   gleDouble deno, numer, t, omt;			\
-							\
-   deno = (v1[0] - v2[0]) * n[0];			\
-   deno += (v1[1] - v2[1]) * n[1];			\
-   deno += (v1[2] - v2[2]) * n[2];			\
-   							\
-   if (deno == 0.0) {					\
-      VEC_COPY (n, v1);					\
-      /* printf ("Intersect: Warning: line is coplanar with plane \n"); */ \
-   } else {						\
-							\
-      numer = (p[0] - v2[0]) * n[0];			\
-      numer += (p[1] - v2[1]) * n[1];			\
-      numer += (p[2] - v2[2]) * n[2];			\
-							\
-      t = numer / deno;					\
-      omt = 1.0 - t;					\
-							\
-      sect[0] = t * v1[0] + omt * v2[0];		\
-      sect[1] = t * v1[1] + omt * v2[1];		\
-      sect[2] = t * v1[2] + omt * v2[2];		\
-   }							\
-}
-
-/* ========================================================== */
-/* 
- * The macro and subroutine BISECTING_PLANE compute a normal vector that
- * describes the bisecting plane between three points (v1, v2 and v3).  
- * This bisecting plane has the following properties:
- * 1) it contains the point v2
- * 2) the angle it makes with v21 == v2 - v1 is equal to the angle it 
- *    makes with v32 == v3 - v2 
- * 3) it is perpendicular to the plane defined by v1, v2, v3.
- *
- * Having input v1, v2, and v3, it returns a unit vector n.
- *
- * In some cases, the user may specify degenerate points, and still
- * expect "reasonable" or "obvious" behaviour.  The "expected"
- * behaviour for these degenerate cases is:
- *
- * 1) if v1 == v2 == v3, then return n=0
- * 2) if v1 == v2, then return v32 (normalized).
- * 3) if v2 == v3, then return v21 (normalized).
- * 4) if v1, v2 and v3 co-linear, then return v21 (normalized).
- *
- * Mathematically, these special cases "make sense" -- we just have to
- * code around potential divide-by-zero's in the code below.
- */
-
-/* ========================================================== */
-
-#define BISECTING_PLANE(valid,n,v1,v2,v3)			\
-{								\
-   double v21[3], v32[3];					\
-   double len21, len32;						\
-   double vdot;							\
-								\
-   VEC_DIFF (v21, v2, v1);					\
-   VEC_DIFF (v32, v3, v2);					\
-								\
-   VEC_LENGTH (len21, v21);					\
-   VEC_LENGTH (len32, v32);					\
-								\
-   if (len21 <= DEGENERATE_TOLERANCE * len32) {			\
-								\
-      if (len32 == 0.0) {					\
-         /* all three points lie ontop of one-another */	\
-         VEC_ZERO (n);						\
-         valid = FALSE;						\
-      } else {							\
-         /* return a normalized copy of v32 as bisector */	\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (n, len32, v32);				\
-         valid = TRUE;						\
-      }								\
-								\
-   } else {							\
-								\
-      valid = TRUE;						\
-								\
-      if (len32 <= DEGENERATE_TOLERANCE * len21) {		\
-         /* return a normalized copy of v21 as bisector */	\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (n, len21, v21);				\
-								\
-      } else {							\
-								\
-         /* normalize v21 to be of unit length */		\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (v21, len21, v21);				\
-								\
-         /* normalize v32 to be of unit length */		\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (v32, len32, v32);				\
-								\
-         VEC_DOT_PRODUCT (vdot, v32, v21);			\
-								\
-         /* if vdot == 1 or -1, then points are colinear */	\
-         if ((vdot >= (1.0-DEGENERATE_TOLERANCE)) || 		\
-             (vdot <= (-1.0+DEGENERATE_TOLERANCE))) {		\
-            VEC_COPY (n, v21);					\
-         } else {						\
-   								\
-            /* go do the full computation */ 			\
-            n[0] = vdot * (v32[0] + v21[0]) - v32[0] - v21[0];	\
-            n[1] = vdot * (v32[1] + v21[1]) - v32[1] - v21[1];	\
-            n[2] = vdot * (v32[2] + v21[2]) - v32[2] - v21[2];	\
-								\
-            /* if above if-test's passed, 			\
-             * n should NEVER be of zero length */		\
-            VEC_NORMALIZE (n);					\
-         } 							\
-      } 							\
-   } 								\
-}
-
-/* ========================================================== */
-/*
- * The block of code below is ifdef'd out, and is here for reference
- * purposes only.  It performs the "mathematically right thing" for
- * computing a bisecting plane, but is, unfortunately, subject ot noise
- * in the presence of near degenerate points.  Since computer graphics,
- * due to sloppy coding, laziness, or correctness, is filled with
- * degenerate points, we can't really use this version.  The code above
- * is far more appropriate for graphics.
- */
-
-#ifdef MATHEMATICALLY_EXACT_GRAPHICALLY_A_KILLER
-#define BISECTING_PLANE(n,v1,v2,v3)				\
-{								\
-   double v21[3], v32[3];					\
-   double len21, len32;						\
-   double vdot;							\
-								\
-   VEC_DIFF (v21, v2, v1);					\
-   VEC_DIFF (v32, v3, v2);					\
-								\
-   VEC_LENGTH (len21, v21);					\
-   VEC_LENGTH (len32, v32);					\
-								\
-   if (len21 == 0.0) {						\
-								\
-      if (len32 == 0.0) {					\
-         /* all three points lie ontop of one-another */	\
-         VEC_ZERO (n);						\
-         valid = FALSE;						\
-      } else {							\
-         /* return a normalized copy of v32 as bisector */	\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (n, len32, v32);				\
-      }								\
-								\
-   } else {							\
-								\
-      /* normalize v21 to be of unit length */			\
-      len21 = 1.0 / len21;					\
-      VEC_SCALE (v21, len21, v21);				\
-								\
-      if (len32 == 0.0) {					\
-         /* return a normalized copy of v21 as bisector */	\
-         VEC_COPY (n, v21);					\
-      } else {							\
-								\
-         /* normalize v32 to be of unit length */		\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (v32, len32, v32);				\
-								\
-         VEC_DOT_PRODUCT (vdot, v32, v21);			\
-								\
-         /* if vdot == 1 or -1, then points are colinear */	\
-         if ((vdot == 1.0) || (vdot == -1.0)) {			\
-            VEC_COPY (n, v21);					\
-         } else {						\
-   								\
-            /* go do the full computation */ 			\
-            n[0] = vdot * (v32[0] + v21[0]) - v32[0] - v21[0];	\
-            n[1] = vdot * (v32[1] + v21[1]) - v32[1] - v21[1];	\
-            n[2] = vdot * (v32[2] + v21[2]) - v32[2] - v21[2];	\
-								\
-            /* if above if-test's passed, 			\
-             * n should NEVER be of zero length */		\
-            VEC_NORMALIZE (n);					\
-         } 							\
-      } 							\
-   } 								\
-}
-#endif
-
-/* ========================================================== */
-/*
- * This macro computes the plane perpendicular to the the plane
- * defined by three points, and whose normal vector is givven as the
- * difference between the two vectors ...
- * 
- * (See way below for the "math" model if you want to understand this.
- * The comments about relative errors above apply here.)
- */
-
-#define CUTTING_PLANE(valid,n,v1,v2,v3)				\
-{								\
-   double v21[3], v32[3];					\
-   double len21, len32;						\
-   double lendiff;						\
-								\
-   VEC_DIFF (v21, v2, v1);					\
-   VEC_DIFF (v32, v3, v2);					\
-								\
-   VEC_LENGTH (len21, v21);					\
-   VEC_LENGTH (len32, v32);					\
-								\
-   if (len21 <= DEGENERATE_TOLERANCE * len32) {			\
-								\
-      if (len32 == 0.0) {					\
-         /* all three points lie ontop of one-another */	\
-         VEC_ZERO (n);						\
-         valid = FALSE;						\
-      } else {							\
-         /* return a normalized copy of v32 as cut-vector */	\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (n, len32, v32);				\
-         valid = TRUE;						\
-      }								\
-								\
-   } else {							\
-								\
-      valid = TRUE;						\
-								\
-      if (len32 <= DEGENERATE_TOLERANCE * len21) {		\
-         /* return a normalized copy of v21 as cut vector */	\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (n, len21, v21);				\
-      } else {							\
-								\
-         /* normalize v21 to be of unit length */		\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (v21, len21, v21);				\
-								\
-         /* normalize v32 to be of unit length */		\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (v32, len32, v32);				\
-								\
-         VEC_DIFF (n, v21, v32);				\
-         VEC_LENGTH (lendiff, n);				\
-								\
-         /* if the perp vector is very small, then the two 	\
-          * vectors are darn near collinear, and the cut 	\
-          * vector is probably poorly defined. */		\
-         if (lendiff < DEGENERATE_TOLERANCE) {			\
-            VEC_ZERO (n);					\
-            valid = FALSE;					\
-         } else {						\
-            lendiff = 1.0 / lendiff;				\
-            VEC_SCALE (n, lendiff, n);				\
-         } 							\
-      } 							\
-   } 								\
-}
-
-/* ========================================================== */
-
-#ifdef MATHEMATICALLY_EXACT_GRAPHICALLY_A_KILLER
-#define CUTTING_PLANE(n,v1,v2,v3)		\
-{						\
-   double v21[3], v32[3];			\
-						\
-   VEC_DIFF (v21, v2, v1);			\
-   VEC_DIFF (v32, v3, v2);			\
-						\
-   VEC_NORMALIZE (v21);				\
-   VEC_NORMALIZE (v32);				\
-						\
-   VEC_DIFF (n, v21, v32);			\
-   VEC_NORMALIZE (n);				\
-}
-#endif
-
-
-/* ============================================================ */
-/* This macro is used in several places to cycle through a series of
- * points to find the next non-degenerate point in a series */
-
-#define FIND_NON_DEGENERATE_POINT(inext,npoints,len,diff,point_array)   \
-{                                                                       \
-   gleDouble slen;							\
-   gleDouble summa[3];							\
-   									\
-   do {                                                                 \
-      /* get distance to next point */                                  \
-      VEC_DIFF (diff, point_array[inext+1], point_array[inext]);        \
-      VEC_LENGTH (len, diff);                                           \
-      VEC_SUM (summa, point_array[inext+1], point_array[inext]);        \
-      VEC_LENGTH (slen, summa);                                         \
-      slen *= DEGENERATE_TOLERANCE;					\
-      inext ++;                                                         \
-   } while ((len <= slen) && (inext < npoints-1));                      \
-}
-
-/* ========================================================== */
-
-extern int bisecting_plane (gleDouble n[3],    /* returned */
-                      gleDouble v1[3],  /* input */
-                      gleDouble v2[3],  /* input */
-                      gleDouble v3[3]);  /* input */
-
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/port.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,298 +0,0 @@
-
-/*
- * port.h 
- *
- * FUNCTION:
- * This file contains defines for porting the tubing toolkit from GL to
- * OpenGL to some callback scheme.
- *
- * HISTORY:
- * Created by Linas Vepstas --  February 1993
- * Added auto texture coord generation hacks, Linas April 1994 
- */
-
-#ifndef __GLE_PORT_H__
-#define __GLE_PORT_H__
-
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-/* ====================================================== */
-/* Some compilers can't handle multiply-subscripted array's */
-
-#ifdef FUNKY_C
-typedef gleDouble gleVector;
-#define AVAL(arr,n,i,j)  arr(6*n+3*i+j)
-#define VVAL(arr,n,i)  arr(3*n+i)
-
-#else  /* FUNKY_C */
-typedef double gleVector[3];
-typedef double glePoint[2];
-#define AVAL(arr,n,i,j)  arr[n][i][j]
-#define VVAL(arr,n,i)  arr[n][i];
-
-#endif /* FUNKY_C */
-
-/* ====================================================== */
-/* These are used to convey info about topography to the 
- * texture mapping routines */
-
-#define FRONT 		1
-#define BACK 		2
-#define FRONT_CAP 	3
-#define BACK_CAP	4
-#define FILLET		5
-
-/* ====================================================== */
-
-#define __GLE_DOUBLE
-
-/* ====================================================== */
-
-#ifdef __GLE_DOUBLE
-#ifndef gleDouble
-    #define gleDouble 		double
-#endif
-#define urot_axis(a,b,c) 	urot_axis_d(a,b,c)
-#define uview_direction(a,b,c) 	uview_direction_d(a,b,c)
-#define uviewpoint(a,b,c,d) 	uviewpoint_d(a,b,c,d)
-#define MULTMATRIX(m)		MULTMATRIX_D(m)
-#define LOADMATRIX(m)		LOADMATRIX_D(m)
-#define V3F(x,j,id)		V3F_D(x,j,id)
-#define N3F(x)			N3F_D(x)
-#define T2F(x,y)		T2F_D(x,y)
-#else 
-#define gleDouble 		float
-#define urot_axis(a,b,c) 	urot_axis_f(a,b,c)
-#define uview_direction(a,b,c) 	uview_direction_f(a,b,c)
-#define uviewpoint(a,b,c,d) 	uviewpoint_f(a,b,c,d)
-#define MULTMATRIX(m)		MULTMATRIX_F(m)
-#define LOADMATRIX(m)		LOADMATRIX_F(m)
-#define V3F(x,j,id)		V3F_F(x,j,id)
-#define N3F(x)			N3F_F(x)
-#define T2F(x,y)		T2F_F(x,y)
-#endif 
-
-/* ====================================================== */
-
-#if (defined DEBUG_GL_32 || DEBUG_OPENGL_10)
-#undef GL_32
-#undef OPENGL_10
-
-#define BGNTMESH(i,len)	printf ("bgntmesh() \n");
-#define ENDTMESH()      printf ("endtmesh() \n");
-#define BGNPOLYGON()	printf ("bgnpolygon() \n");
-#define ENDPOLYGON()	printf ("endpolygon() \n");
-#define V3F_F(x,j,id)	printf ("v3f(x)		%f %f %f \n", x[0], x[1], x[2]);
-#define V3F_D(x,j,id)	printf ("v3d(x) 	%f %f %f \n", x[0], x[1], x[2]);
-#define	N3F_F(x)	printf ("n3f(x) 	%f %f %f \n", x[0], x[1], x[2]);
-#define	N3F_D(x)	printf ("n3d(x)		%f %f %f \n", x[0], x[1], x[2]);
-#define	C3F(x)		printf ("c3f(x) 	%f %f %f \n", x[0], x[1], x[2]);
-
-#define	POPMATRIX()	printf ("popmatrix () \n");
-#define	PUSHMATRIX()	printf ("pushmatrix() \n");
-#define	MULTMATRIX_F(x)	MULTMATRIX_D(x)
-#define	LOADMATRIX_F(x)	LOADMATRIX_D(x)
-
-
-#define LOADMATRIX_D(x) {				\
-   int i, j; 						\
-   printf ("loadmatrix (x) \n");			\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         printf ( "%f ", x[i][j]);			\
-      }							\
-      printf (" \n");					\
-   }							\
-}
-
-#define MULTMATRIX_D(x) {				\
-   int i, j; 						\
-   printf ("multmatrix (x) \n");			\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         printf ( "%f ", x[i][j]);			\
-      }							\
-      printf (" \n");					\
-   }							\
-}
-
-#define __IS_LIGHTING_ON  (1)
-
-#endif
-
-/* ====================================================== */
-
-#ifdef GL_32
-
-#include <gl/gl.h>
-
-#define BGNTMESH(i,len)	bgntmesh()
-#define ENDTMESH()	endtmesh()
-#define BGNPOLYGON()	bgnpolygon()
-#define ENDPOLYGON()	endpolygon()
-#define V3F_F(x,j,id)	v3f(x)
-#define V3F_D(x,j,id)	v3d(x)
-#define	N3F_F(x)	n3f(x)
-#define	T2F_F(x,y)
-#define	T2F_D(x,y)
-#define	C3F(x)		c3f(x)
-
-#define	POPMATRIX()	popmatrix ()
-#define	PUSHMATRIX()	pushmatrix()
-#define	MULTMATRIX_F(x)	multmatrix (x)
-#define	LOADMATRIX_F(x)	loadmatrix (x)
-
-#define	N3F_D(x) {					\
-   float nnn[3];					\
-   nnn[0] = (float) x[0]; 				\
-   nnn[1] = (float) x[1]; 				\
-   nnn[2] = (float) x[2]; 				\
-   n3f (nnn);						\
-}
-
-#define LOADMATRIX_D(x) {				\
-   int i, j; 						\
-   float mmm[4][4];					\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         mmm[i][j] = (float) x[i][j];			\
-      }							\
-   }							\
-   loadmatrix(mmm);					\
-}
-
-#define MULTMATRIX_D(x) {				\
-   int i, j; 						\
-   float mmm[4][4];					\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         mmm[i][j] = (float) x[i][j];			\
-      }							\
-   }							\
-   multmatrix(mmm);					\
-}
-
-/* #define __IS_LIGHTING_ON  (MSINGLE == getmmode()) */
-#define __IS_LIGHTING_ON  (extrusion_join_style & TUBE_LIGHTING_ON)
-
-#endif /* GL_32 */
-
-/* ====================================================== */
-#ifdef OPENGL_10
-
-#if defined(_WIN32)
-#include <windows.h>
-#pragma warning (disable:4244)          /* disable bogus conversion warnings */
-#endif
-#include <OpenGL/gl.h>
-#include <OpenGL/glu.h>
-
-/*
-#define	N3F_F(x) {					\
-   float nnn[3];					\
-   nnn[0] = - (float) x[0]; 				\
-   nnn[1] = - (float) x[1]; 				\
-   nnn[2] = - (float) x[2]; 				\
-   glNormal3fv (nnn);						\
-}
-#define	N3F_D(x) {					\
-   float nnn[3];					\
-   nnn[0] = - (float) x[0]; 				\
-   nnn[1] = - (float) x[1]; 				\
-   nnn[2] = - (float) x[2]; 				\
-   glNormal3fv (nnn);						\
-}
-*/
-
-#define	C3F(x)		glColor3fv(x)
-#define	T2F_F(x,y)	glTexCoord2f(x,y)
-#define	T2F_D(x,y)	glTexCoord2d(x,y)
-
-#define	POPMATRIX()	glPopMatrix()
-#define	PUSHMATRIX()	glPushMatrix()
-
-#define	MULTMATRIX_F(x)	glMultMatrixf ((const GLfloat *)x)
-#define	LOADMATRIX_F(x)	glLoadMatrixf ((const GLfloat *)x)
-
-#define	MULTMATRIX_D(x)	glMultMatrixd ((const GLdouble *)x)
-#define	LOADMATRIX_D(x)	glLoadMatrixd ((const GLdouble *)x)
-
-#define __IS_LIGHTING_ON  (glIsEnabled(GL_LIGHTING))
-
-/* ====================================================== */
-#ifdef AUTO_TEXTURE
-
-#define BGNTMESH(i,len) { 					\
-	if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))(i,len);\
-	glBegin (GL_TRIANGLE_STRIP); 			\
-}
-
-#define BGNPOLYGON() { 					\
-	if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))();\
-	glBegin (GL_POLYGON);				\
-}
-
-#define N3F_F(x) { 					\
-	if(_gle_gc -> n3f_gen_texture) (*(_gle_gc -> n3f_gen_texture))(x); \
-	glNormal3fv(x); 				\
-}
-
-#define N3F_D(x) { 					\
-	if(_gle_gc -> n3d_gen_texture) (*(_gle_gc -> n3d_gen_texture))(x); \
-	glNormal3dv(x); 				\
-}
-
-#define V3F_F(x,j,id) { 					\
-	if(_gle_gc -> v3f_gen_texture) (*(_gle_gc -> v3f_gen_texture))(x,j,id);\
-	glVertex3fv(x); 				\
-}
-
-#define V3F_D(x,j,id) { 					\
-	if(_gle_gc -> v3d_gen_texture) (*(_gle_gc -> v3d_gen_texture))(x,j,id); \
-	glVertex3dv(x); 				\
-}
-
-#define ENDTMESH() {					\
-	if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \
-	glEnd ();					\
-}
-
-#define ENDPOLYGON() {					\
-	if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \
-	glEnd ();					\
-}
-
-/* ====================================================== */
-#else /* AUTO_TEXTURE */
-
-#define BGNTMESH(i,len)	glBegin (GL_TRIANGLE_STRIP);
-#define BGNPOLYGON() 	glBegin (GL_POLYGON);
-
-#define	N3F_F(x)	glNormal3fv(x)
-#define	N3F_D(x)	glNormal3dv(x)
-#define V3F_F(x,j,id)	glVertex3fv(x);
-#define V3F_D(x,j,id)	glVertex3dv(x);
-
-#define ENDTMESH()	glEnd ()
-#define ENDPOLYGON()	glEnd()
-
-#endif /* AUTO_TEXTURE */
-
-#endif /* OPENGL_10 */
-
-/* ====================================================== */
-
-
-#endif /* __GLE_PORT_H__ */
-/* ================== END OF FILE ======================= */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/rot.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-
-/*
- * rot.h
- *
- * FUNCTION:
- * rotation matrix utilities
- *
- * HISTORY:
- * Linas Vepstas Aug 1990
- */
-
-/* ========================================================== */
-/* 
- * The MACROS below generate and return more traditional rotation
- * matrices -- matrices for rotations about principal axes.
- */
-/* ========================================================== */
-
-#define ROTX_CS(m,cosine,sine)		\
-{					\
-   /* rotation about the x-axis */	\
-					\
-   m[0][0] = 1.0;			\
-   m[0][1] = 0.0;			\
-   m[0][2] = 0.0;			\
-   m[0][3] = 0.0;			\
-					\
-   m[1][0] = 0.0;			\
-   m[1][1] = (cosine);			\
-   m[1][2] = (sine);			\
-   m[1][3] = 0.0;			\
-					\
-   m[2][0] = 0.0;			\
-   m[2][1] = -(sine);			\
-   m[2][2] = (cosine);			\
-   m[2][3] = 0.0;			\
-					\
-   m[3][0] = 0.0;			\
-   m[3][1] = 0.0;			\
-   m[3][2] = 0.0;			\
-   m[3][3] = 1.0;			\
-}				
-
-/* ========================================================== */
-
-#define ROTY_CS(m,cosine,sine)		\
-{					\
-   /* rotation about the y-axis */	\
-					\
-   m[0][0] = (cosine);			\
-   m[0][1] = 0.0;			\
-   m[0][2] = -(sine);			\
-   m[0][3] = 0.0;			\
-					\
-   m[1][0] = 0.0;			\
-   m[1][1] = 1.0;			\
-   m[1][2] = 0.0;			\
-   m[1][3] = 0.0;			\
-					\
-   m[2][0] = (sine);			\
-   m[2][1] = 0.0;			\
-   m[2][2] = (cosine);			\
-   m[2][3] = 0.0;			\
-					\
-   m[3][0] = 0.0;			\
-   m[3][1] = 0.0;			\
-   m[3][2] = 0.0;			\
-   m[3][3] = 1.0;			\
-}
-
-/* ========================================================== */
-
-#define ROTZ_CS(m,cosine,sine)		\
-{					\
-   /* rotation about the z-axis */	\
-					\
-   m[0][0] = (cosine);			\
-   m[0][1] = (sine);			\
-   m[0][2] = 0.0;			\
-   m[0][3] = 0.0;			\
-					\
-   m[1][0] = -(sine);			\
-   m[1][1] = (cosine);			\
-   m[1][2] = 0.0;			\
-   m[1][3] = 0.0;			\
-					\
-   m[2][0] = 0.0;			\
-   m[2][1] = 0.0;			\
-   m[2][2] = 1.0;			\
-   m[2][3] = 0.0;			\
-					\
-   m[3][0] = 0.0;			\
-   m[3][1] = 0.0;			\
-   m[3][2] = 0.0;			\
-   m[3][3] = 1.0;			\
-}
-
-/* ========================================================== */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/segment.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-
-/*
- * MODULE: segment.h
- *
- * FUNCTION:
- * Contains function prototypes for segment drawing subroutines.
- * These are used only internally, and are not to be exported to
- * the user.
- *
- * HISTORY:
- * Create by Linas Vepstas
- * Added tube.h include to define gleDouble, tad February 2002
- */
-
-/* ============================================================ */
-
-#include "tube.h"
-
-extern void draw_segment_plain (int ncp,       /* number of contour points */
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           int inext, double len);
-
-extern void draw_segment_color (int ncp,       /* number of contour points */
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_segment_edge_n (int ncp,      /* number of contour points */
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           int inext, double len);
-
-extern void draw_segment_c_and_edge_n (int ncp,   
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_segment_facet_n (int ncp,     
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           int inext, double len);
-
-extern void draw_segment_c_and_facet_n (int ncp,    
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-/* ============================================================ */
-
-extern void draw_binorm_segment_edge_n (int ncp,  
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           int inext, double len);
-
-extern void draw_binorm_segment_c_and_edge_n (int ncp,   
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_binorm_segment_facet_n (int ncp, 
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           int inext, double len);
-
-extern void draw_binorm_segment_c_and_facet_n (int ncp,    
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_angle_style_back_cap (int ncp,        /* number of contour points */
-                           gleDouble bi[3],             /* biscetor */
-                           gleDouble point_array[][3]);  /* polyline */
-
-/* -------------------------- end of file -------------------------------- */
-
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/tube.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +0,0 @@
-/* 
- * tube.h
- *
- * FUNCTION:
- * Tubing and Extrusion header file.
- * This file provides protypes and defines for the extrusion 
- * and tubing primitives.
- *
- * HISTORY:
- * Linas Vepstas 1990, 1991
- */
-
-#ifndef __TUBE_H__
-#define __TUBE_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- GLE API revision history:
- 
- GLE_API_VERSION is updated to reflect GLE API changes (interface
- changes, semantic changes, deletions, or additions).
- 
- GLE_API_VERSION=228  GLUT 3.7 release of GLE.
-**/
-#ifndef GLE_API_VERSION  /* allow this to be overriden */
-#define GLE_API_VERSION                228
-#endif
-
-/* some types */
-#ifndef gleDouble
-    #define gleDouble double
-#endif
-typedef gleDouble gleAffine[2][3];
-
-/* ====================================================== */
-
-/* defines for tubing join styles */
-#define TUBE_JN_RAW          0x1
-#define TUBE_JN_ANGLE        0x2
-#define TUBE_JN_CUT          0x3
-#define TUBE_JN_ROUND        0x4
-#define TUBE_JN_MASK         0xf    /* mask bits */
-#define TUBE_JN_CAP          0x10
-
-/* determine how normal vectors are to be handled */
-#define TUBE_NORM_FACET      0x100
-#define TUBE_NORM_EDGE       0x200
-#define TUBE_NORM_PATH_EDGE  0x400 /* for spiral, lathe, helix primitives */
-#define TUBE_NORM_MASK       0xf00    /* mask bits */
-
-/* closed or open countours */
-#define TUBE_CONTOUR_CLOSED	0x1000
-
-#define GLE_TEXTURE_ENABLE	0x10000
-#define GLE_TEXTURE_STYLE_MASK	0xff
-#define GLE_TEXTURE_VERTEX_FLAT		1
-#define GLE_TEXTURE_NORMAL_FLAT		2
-#define GLE_TEXTURE_VERTEX_CYL		3
-#define GLE_TEXTURE_NORMAL_CYL		4
-#define GLE_TEXTURE_VERTEX_SPH		5
-#define GLE_TEXTURE_NORMAL_SPH		6
-#define GLE_TEXTURE_VERTEX_MODEL_FLAT	7
-#define GLE_TEXTURE_NORMAL_MODEL_FLAT	8
-#define GLE_TEXTURE_VERTEX_MODEL_CYL	9
-#define GLE_TEXTURE_NORMAL_MODEL_CYL	10
-#define GLE_TEXTURE_VERTEX_MODEL_SPH	11
-#define GLE_TEXTURE_NORMAL_MODEL_SPH	12
-
-#ifdef GL_32
-/* HACK for GL 3.2 -- needed because no way to tell if lighting is on.  */
-#define TUBE_LIGHTING_ON	0x80000000
-
-#define gleExtrusion		extrusion
-#define gleSetJoinStyle		setjoinstyle
-#define gleGetJoinStyle		getjoinstyle
-#define glePolyCone		polycone
-#define glePolyCylinder		polycylinder
-#define	gleSuperExtrusion	super_extrusion
-#define	gleTwistExtrusion	twist_extrusion
-#define	gleSpiral		spiral
-#define	gleLathe		lathe
-#define	gleHelicoid		helicoid
-#define	gleToroid		toroid
-#define	gleScrew		screw
-
-#endif /* GL_32 */
-
-extern int gleGetJoinStyle (void);
-extern void gleSetJoinStyle (int style);	/* bitwise OR of flags */
-extern int gleGetNumSlices(void);
-extern void gleSetNumSlices(int slices);
-
-/* draw polyclinder, specified as a polyline */
-extern void glePolyCylinder (int npoints,	/* num points in polyline */
-                   gleDouble point_array[][3],	/* polyline vertces */
-                   float color_array[][3],	/* colors at polyline verts */
-                   gleDouble radius);		/* radius of polycylinder */
-
-/* draw polycone, specified as a polyline with radii */
-extern void glePolyCone (int npoints,	 /* numpoints in poly-line */
-                   gleDouble point_array[][3],	/* polyline vertices */
-                   float color_array[][3],	/* colors at polyline verts */
-                   gleDouble radius_array[]); /* cone radii at polyline verts */
-
-/* extrude arbitrary 2D contour along arbitrary 3D path */
-extern void gleExtrusion (int ncp,         /* number of contour points */
-                gleDouble contour[][2],     /* 2D contour */
-                gleDouble cont_normal[][2], /* 2D contour normals */
-                gleDouble up[3],            /* up vector for contour */
-                int npoints,            /* numpoints in poly-line */
-                gleDouble point_array[][3], /* polyline vertices */
-                float color_array[][3]); /* colors at polyline verts */
-
-/* extrude 2D contour, specifying local rotations (twists) */
-extern void gleTwistExtrusion (int ncp,         /* number of contour points */
-                gleDouble contour[][2],    /* 2D contour */
-                gleDouble cont_normal[][2], /* 2D contour normals */
-                gleDouble up[3],           /* up vector for contour */
-                int npoints,           /* numpoints in poly-line */
-                gleDouble point_array[][3],        /* polyline vertices */
-                float color_array[][3],        /* color at polyline verts */
-                gleDouble twist_array[]);   /* countour twists (in degrees) */
-
-/* extrude 2D contour, specifying local affine tranformations */
-extern void gleSuperExtrusion (int ncp,  /* number of contour points */
-                gleDouble contour[][2],    /* 2D contour */
-                gleDouble cont_normal[][2], /* 2D contour normals */
-                gleDouble up[3],           /* up vector for contour */
-                int npoints,           /* numpoints in poly-line */
-                gleDouble point_array[][3],        /* polyline vertices */
-                float color_array[][3],        /* color at polyline verts */
-                gleDouble xform_array[][2][3]);   /* 2D contour xforms */
-
-/* spiral moves contour along helical path by parallel transport */
-extern void gleSpiral (int ncp,        /* number of contour points */
-             gleDouble contour[][2],    /* 2D contour */
-             gleDouble cont_normal[][2], /* 2D contour normals */
-             gleDouble up[3],           /* up vector for contour */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* lathe moves contour along helical path by helically shearing 3D space */
-extern void gleLathe (int ncp,        /* number of contour points */
-             gleDouble contour[][2],    /* 2D contour */
-             gleDouble cont_normal[][2], /* 2D contour normals */
-             gleDouble up[3],           /* up vector for contour */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* similar to spiral, except contour is a circle */
-extern void gleHelicoid (gleDouble rToroid, /* circle contour (torus) radius */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* similar to lathe, except contour is a circle */
-extern void gleToroid (gleDouble rToroid, /* circle contour (torus) radius */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* draws a screw shape */
-extern void gleScrew (int ncp,          /* number of contour points */
-             gleDouble contour[][2],    /* 2D contour */
-             gleDouble cont_normal[][2], /* 2D contour normals */
-             gleDouble up[3],           /* up vector for contour */
-             gleDouble startz,          /* start of segment */
-             gleDouble endz,            /* end of segment */
-             gleDouble twist);          /* number of rotations */
-
-extern void gleTextureMode (int mode);
-
-#ifdef __cplusplus
-}
-
-#endif
-#endif /* __TUBE_H__ */
-/* ================== END OF FILE ======================= */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/tube_gc.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-
-/*
- * tube_gc.h
- *
- * FUNCTION:
- * This file allows for easy changes to changes in the way the extrusion
- * library handles state info (i.e. context).
- *
- * HISTORY:
- * Linas Vepstas --- February 1993
- * Added auto texture coord generation hacks, Linas April 1994
- * Added tube.h include to define gleDouble, tad February 2002
- */
-
-#include "tube.h"
-#include "port.h" /* for gleVector */
-
-typedef float gleColor[3];
-typedef double gleTwoVec[2];
-
-typedef struct {
-
-   /* public methods */
-   void (*bgn_gen_texture) (int, double);
-   void (*n3f_gen_texture) (float *);
-   void (*n3d_gen_texture) (double *);
-   void (*v3f_gen_texture) (float *, int, int);
-   void (*v3d_gen_texture) (double *, int, int);
-   void (*end_gen_texture) (void);
-
-   /* protected members -- "general knowledge" stuff */
-   int join_style;
-
-   /* arguments passed into extrusion code */ 
-   int ncp;     /* number of contour points */
-   gleTwoVec *contour;    /* 2D contour */
-   gleTwoVec *cont_normal;  /* 2D contour normals */
-   gleDouble *up;               /* up vector */
-   int npoints;  /* number of points in polyline */
-   gleVector *point_array;     /* path */
-   gleColor *color_array;         /* path colors */
-   gleAffine *xform_array;  /* contour xforms */
-
-   /* private members, used by texturing code */
-   int num_vert;
-   int segment_number;
-   double segment_length;
-   double accum_seg_len;
-   double prev_x;
-   double prev_y;
-
-   void (*save_bgn_gen_texture) (int, double);
-   void (*save_n3f_gen_texture) (float *);
-   void (*save_n3d_gen_texture) (double *);
-   void (*save_v3f_gen_texture) (float *, int, int);
-   void (*save_v3d_gen_texture) (double *, int, int);
-   void (*save_end_gen_texture) (void);
-
-} gleGC;
-
-extern gleGC *_gle_gc;
-extern gleGC * gleCreateGC (void);
-
-#define INIT_GC() {if (!_gle_gc) _gle_gc = gleCreateGC(); }
-#define extrusion_join_style (_gle_gc->join_style)
-
-#define __TUBE_CLOSE_CONTOUR (extrusion_join_style & TUBE_CONTOUR_CLOSED)
-#define __TUBE_DRAW_CAP (extrusion_join_style & TUBE_JN_CAP)
-#define __TUBE_DRAW_FACET_NORMALS (extrusion_join_style & TUBE_NORM_FACET)
-#define __TUBE_DRAW_PATH_EDGE_NORMALS (extrusion_join_style & TUBE_NORM_PATH_EDGE)
-
-#define __TUBE_STYLE (extrusion_join_style & TUBE_JN_MASK)
-#define __TUBE_RAW_JOIN (extrusion_join_style & TUBE_JN_RAW)
-#define __TUBE_CUT_JOIN (extrusion_join_style & TUBE_JN_CUT)
-#define __TUBE_ANGLE_JOIN (extrusion_join_style & TUBE_JN_ANGLE)
-#define __TUBE_ROUND_JOIN (extrusion_join_style & TUBE_JN_ROUND)
-
-/* ======================= END OF FILE ========================== */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Headers/vvector.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1339 +0,0 @@
-
-/*
- * vvector.h
- *
- * FUNCTION:
- * This file contains a number of utilities useful for handling
- * 3D vectors
- * 
- * HISTORY:
- * Written by Linas Vepstas, August 1991
- * Added 2D code, March 1993
- * Added Outer products, C++ proofed, Linas Vepstas October 1993
- */
-
-#ifndef __GUTIL_VECTOR_H__
-#define __GUTIL_VECTOR_H__
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-
-#include <math.h>
-#include "port.h"
-
-/* ========================================================== */
-/* Zero out a 2D vector */
-
-#define VEC_ZERO_2(a)				\
-{						\
-   (a)[0] = (a)[1] = 0.0;			\
-}
-
-/* ========================================================== */
-/* Zero out a 3D vector */
-
-#define VEC_ZERO(a)				\
-{						\
-   (a)[0] = (a)[1] = (a)[2] = 0.0;		\
-}
-
-/* ========================================================== */
-/* Zero out a 4D vector */
-
-#define VEC_ZERO_4(a)				\
-{						\
-   (a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0;	\
-}
-
-/* ========================================================== */
-/* Vector copy */
-
-#define VEC_COPY_2(b,a)				\
-{						\
-   (b)[0] = (a)[0];				\
-   (b)[1] = (a)[1];				\
-}
-
-/* ========================================================== */
-/* Copy 3D vector */
-
-#define VEC_COPY(b,a)				\
-{						\
-   (b)[0] = (a)[0];				\
-   (b)[1] = (a)[1];				\
-   (b)[2] = (a)[2];				\
-}
-
-/* ========================================================== */
-/* Copy 4D vector */
-
-#define VEC_COPY_4(b,a)				\
-{						\
-   (b)[0] = (a)[0];				\
-   (b)[1] = (a)[1];				\
-   (b)[2] = (a)[2];				\
-   (b)[3] = (a)[3];				\
-}
-
-/* ========================================================== */
-/* Vector difference */
-
-#define VEC_DIFF_2(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] - (v1)[0];		\
-   (v21)[1] = (v2)[1] - (v1)[1];		\
-}
-
-/* ========================================================== */
-/* Vector difference */
-
-#define VEC_DIFF(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] - (v1)[0];		\
-   (v21)[1] = (v2)[1] - (v1)[1];		\
-   (v21)[2] = (v2)[2] - (v1)[2];		\
-}
-
-/* ========================================================== */
-/* Vector difference */
-
-#define VEC_DIFF_4(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] - (v1)[0];		\
-   (v21)[1] = (v2)[1] - (v1)[1];		\
-   (v21)[2] = (v2)[2] - (v1)[2];		\
-   (v21)[3] = (v2)[3] - (v1)[3];		\
-}
-
-/* ========================================================== */
-/* Vector sum */
-
-#define VEC_SUM_2(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] + (v1)[0];		\
-   (v21)[1] = (v2)[1] + (v1)[1];		\
-}
-
-/* ========================================================== */
-/* Vector sum */
-
-#define VEC_SUM(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] + (v1)[0];		\
-   (v21)[1] = (v2)[1] + (v1)[1];		\
-   (v21)[2] = (v2)[2] + (v1)[2];		\
-}
-
-/* ========================================================== */
-/* Vector sum */
-
-#define VEC_SUM_4(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] + (v1)[0];		\
-   (v21)[1] = (v2)[1] + (v1)[1];		\
-   (v21)[2] = (v2)[2] + (v1)[2];		\
-   (v21)[3] = (v2)[3] + (v1)[3];		\
-}
-
-/* ========================================================== */
-/* scalar times vector */
-
-#define VEC_SCALE_2(c,a,b)			\
-{						\
-   (c)[0] = (a)*(b)[0];				\
-   (c)[1] = (a)*(b)[1];				\
-}
-
-/* ========================================================== */
-/* scalar times vector */
-
-#define VEC_SCALE(c,a,b)			\
-{						\
-   (c)[0] = (a)*(b)[0];				\
-   (c)[1] = (a)*(b)[1];				\
-   (c)[2] = (a)*(b)[2];				\
-}
-
-/* ========================================================== */
-/* scalar times vector */
-
-#define VEC_SCALE_4(c,a,b)			\
-{						\
-   (c)[0] = (a)*(b)[0];				\
-   (c)[1] = (a)*(b)[1];				\
-   (c)[2] = (a)*(b)[2];				\
-   (c)[3] = (a)*(b)[3];				\
-}
-
-/* ========================================================== */
-/* accumulate scaled vector */
-
-#define VEC_ACCUM_2(c,a,b)			\
-{						\
-   (c)[0] += (a)*(b)[0];			\
-   (c)[1] += (a)*(b)[1];			\
-}
-
-/* ========================================================== */
-/* accumulate scaled vector */
-
-#define VEC_ACCUM(c,a,b)			\
-{						\
-   (c)[0] += (a)*(b)[0];			\
-   (c)[1] += (a)*(b)[1];			\
-   (c)[2] += (a)*(b)[2];			\
-}
-
-/* ========================================================== */
-/* accumulate scaled vector */
-
-#define VEC_ACCUM_4(c,a,b)			\
-{						\
-   (c)[0] += (a)*(b)[0];			\
-   (c)[1] += (a)*(b)[1];			\
-   (c)[2] += (a)*(b)[2];			\
-   (c)[3] += (a)*(b)[3];			\
-}
-
-/* ========================================================== */
-/* Vector dot product */
-
-#define VEC_DOT_PRODUCT_2(c,a,b)			\
-{							\
-   c = (a)[0]*(b)[0] + (a)[1]*(b)[1];			\
-}
-
-/* ========================================================== */
-/* Vector dot product */
-
-#define VEC_DOT_PRODUCT(c,a,b)				\
-{							\
-   c = (a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2];	\
-}
-
-/* ========================================================== */
-/* Vector dot product */
-
-#define VEC_DOT_PRODUCT_4(c,a,b)			\
-{							\
-   c = (a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3] ;	\
-}
-
-/* ========================================================== */
-/* vector impact parameter (squared) */
-
-#define VEC_IMPACT_SQ(bsq,direction,position)		\
-{							\
-   gleDouble vlen, llel;					\
-   VEC_DOT_PRODUCT (vlen, position, position);		\
-   VEC_DOT_PRODUCT (llel, direction, position);		\
-   bsq = vlen - llel*llel;				\
-}
-
-/* ========================================================== */
-/* vector impact parameter */
-
-#define VEC_IMPACT(bsq,direction,position)		\
-{							\
-   VEC_IMPACT_SQ(bsq,direction,position);		\
-   bsq = sqrt (bsq);					\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_LENGTH_2(vlen,a)			\
-{						\
-   vlen = a[0]*a[0] + a[1]*a[1];			\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_LENGTH(vlen,a)			\
-{						\
-   vlen = (a)[0]*(a)[0] + (a)[1]*(a)[1];		\
-   vlen += (a)[2]*(a)[2];			\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_LENGTH_4(vlen,a)			\
-{						\
-   vlen = (a)[0]*(a)[0] + (a)[1]*(a)[1];		\
-   vlen += (a)[2]*(a)[2];			\
-   vlen += (a)[3] * (a)[3];			\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* distance between two points */
-
-#define VEC_DISTANCE(vlen,va,vb)			\
-{						\
-    gleDouble tmp[4];				\
-    VEC_DIFF (tmp, vb, va);			\
-    VEC_LENGTH (vlen, tmp);			\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_CONJUGATE_LENGTH(vlen,a)		\
-{						\
-   vlen = 1.0 - a[0]*a[0] - a[1]*a[1] - a[2]*a[2];\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_NORMALIZE(a)			\
-{						\
-   double vlen;					\
-   VEC_LENGTH (vlen,a);				\
-   if (vlen != 0.0) {				\
-      vlen = 1.0 / vlen;				\
-      a[0] *= vlen;				\
-      a[1] *= vlen;				\
-      a[2] *= vlen;				\
-   }						\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_RENORMALIZE(a,newlen)		\
-{						\
-   double vlen;					\
-   VEC_LENGTH (vlen,a);				\
-   if (vlen != 0.0) {				\
-      vlen = newlen / vlen;				\
-      a[0] *= vlen;				\
-      a[1] *= vlen;				\
-      a[2] *= vlen;				\
-   }						\
-}
-
-/* ========================================================== */
-/* 3D Vector cross product yeilding vector */
-
-#define VEC_CROSS_PRODUCT(c,a,b)		\
-{						\
-   c[0] = (a)[1] * (b)[2] - (a)[2] * (b)[1];	\
-   c[1] = (a)[2] * (b)[0] - (a)[0] * (b)[2];	\
-   c[2] = (a)[0] * (b)[1] - (a)[1] * (b)[0];	\
-}
-
-/* ========================================================== */
-/* Vector perp -- assumes that n is of unit length 
- * accepts vector v, subtracts out any component parallel to n */
-
-#define VEC_PERP(vp,v,n)			\
-{						\
-   double vdot;					\
-						\
-   VEC_DOT_PRODUCT (vdot, v, n);			\
-   vp[0] = (v)[0] - (vdot) * (n)[0];		\
-   vp[1] = (v)[1] - (vdot) * (n)[1];		\
-   vp[2] = (v)[2] - (vdot) * (n)[2];		\
-}
-
-/* ========================================================== */
-/* Vector parallel -- assumes that n is of unit length 
- * accepts vector v, subtracts out any component perpendicular to n */
-
-#define VEC_PARALLEL(vp,v,n)			\
-{						\
-   double vdot;					\
-						\
-   VEC_DOT_PRODUCT (vdot, v, n);			\
-   vp[0] = (vdot) * (n)[0];			\
-   vp[1] = (vdot) * (n)[1];			\
-   vp[2] = (vdot) * (n)[2];			\
-}
-
-/* ========================================================== */
-/* Vector reflection -- assumes n is of unit length */
-/* Takes vector v, reflects it against reflector n, and returns vr */
-
-#define VEC_REFLECT(vr,v,n)			\
-{						\
-   double vdot;					\
-						\
-   VEC_DOT_PRODUCT (vdot, v, n);			\
-   vr[0] = (v)[0] - 2.0 * (vdot) * (n)[0];	\
-   vr[1] = (v)[1] - 2.0 * (vdot) * (n)[1];	\
-   vr[2] = (v)[2] - 2.0 * (vdot) * (n)[2];	\
-}
-
-/* ========================================================== */
-/* Vector blending */
-/* Takes two vectors a, b, blends them together */ 
-
-#define VEC_BLEND(vr,sa,a,sb,b)			\
-{						\
-						\
-   vr[0] = (sa) * (a)[0] + (sb) * (b)[0];	\
-   vr[1] = (sa) * (a)[1] + (sb) * (b)[1];	\
-   vr[2] = (sa) * (a)[2] + (sb) * (b)[2];	\
-}
-
-/* ========================================================== */
-/* Vector print */
-
-#define VEC_PRINT_2(a)					\
-{							\
-   double vlen;						\
-   VEC_LENGTH_2 (vlen, a);					\
-   printf (" a is %f %f length of a is %f \n", a[0], a[1], vlen); \
-}
-
-/* ========================================================== */
-/* Vector print */
-
-#define VEC_PRINT(a)					\
-{							\
-   double vlen;						\
-   VEC_LENGTH (vlen, (a));				\
-   printf (" a is %f %f %f length of a is %f \n", (a)[0], (a)[1], (a)[2], vlen); \
-}
-
-/* ========================================================== */
-/* Vector print */
-
-#define VEC_PRINT_4(a)					\
-{							\
-   double vlen;						\
-   VEC_LENGTH_4 (vlen, (a));				\
-   printf (" a is %f %f %f %f length of a is %f \n",	\
-       (a)[0], (a)[1], (a)[2], (a)[3], vlen);		\
-}
-
-/* ========================================================== */
-/* print matrix */
-
-#define MAT_PRINT_4X4(mmm) {				\
-   int i,j;						\
-   printf ("matrix mmm is \n");				\
-   if (mmm == NULL) {					\
-      printf (" Null \n");				\
-   } else {						\
-      for (i=0; i<4; i++) {				\
-         for (j=0; j<4; j++) {				\
-            printf ("%f ", mmm[i][j]);			\
-         }						\
-         printf (" \n");				\
-      }							\
-   }							\
-}
-
-/* ========================================================== */
-/* print matrix */
-
-#define MAT_PRINT_3X3(mmm) {				\
-   int i,j;						\
-   printf ("matrix mmm is \n");				\
-   if (mmm == NULL) {					\
-      printf (" Null \n");				\
-   } else {						\
-      for (i=0; i<3; i++) {				\
-         for (j=0; j<3; j++) {				\
-            printf ("%f ", mmm[i][j]);			\
-         }						\
-         printf (" \n");				\
-      }							\
-   }							\
-}
-
-/* ========================================================== */
-/* print matrix */
-
-#define MAT_PRINT_2X3(mmm) {				\
-   int i,j;						\
-   printf ("matrix mmm is \n");				\
-   if (mmm == NULL) {					\
-      printf (" Null \n");				\
-   } else {						\
-      for (i=0; i<2; i++) {				\
-         for (j=0; j<3; j++) {				\
-            printf ("%f ", mmm[i][j]);			\
-         }						\
-         printf (" \n");				\
-      }							\
-   }							\
-}
-
-/* ========================================================== */
-/* initialize matrix */
-
-#define IDENTIFY_MATRIX_3X3(m)			\
-{						\
-   m[0][0] = 1.0;				\
-   m[0][1] = 0.0;				\
-   m[0][2] = 0.0;				\
-						\
-   m[1][0] = 0.0;				\
-   m[1][1] = 1.0;				\
-   m[1][2] = 0.0;				\
-						\
-   m[2][0] = 0.0;				\
-   m[2][1] = 0.0;				\
-   m[2][2] = 1.0;				\
-}
-
-/* ========================================================== */
-/* initialize matrix */
-
-#define IDENTIFY_MATRIX_4X4(m)			\
-{						\
-   m[0][0] = 1.0;				\
-   m[0][1] = 0.0;				\
-   m[0][2] = 0.0;				\
-   m[0][3] = 0.0;				\
-						\
-   m[1][0] = 0.0;				\
-   m[1][1] = 1.0;				\
-   m[1][2] = 0.0;				\
-   m[1][3] = 0.0;				\
-						\
-   m[2][0] = 0.0;				\
-   m[2][1] = 0.0;				\
-   m[2][2] = 1.0;				\
-   m[2][3] = 0.0;				\
-						\
-   m[3][0] = 0.0;				\
-   m[3][1] = 0.0;				\
-   m[3][2] = 0.0;				\
-   m[3][3] = 1.0;				\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_2X2(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-				\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_2X3(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-   b[0][2] = a[0][2];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[1][2];		\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_3X3(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-   b[0][2] = a[0][2];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[1][2];		\
-				\
-   b[2][0] = a[2][0];		\
-   b[2][1] = a[2][1];		\
-   b[2][2] = a[2][2];		\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_4X4(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-   b[0][2] = a[0][2];		\
-   b[0][3] = a[0][3];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[1][2];		\
-   b[1][3] = a[1][3];		\
-				\
-   b[2][0] = a[2][0];		\
-   b[2][1] = a[2][1];		\
-   b[2][2] = a[2][2];		\
-   b[2][3] = a[2][3];		\
-				\
-   b[3][0] = a[3][0];		\
-   b[3][1] = a[3][1];		\
-   b[3][2] = a[3][2];		\
-   b[3][3] = a[3][3];		\
-}
-
-/* ========================================================== */
-/* matrix transpose */
-
-#define TRANSPOSE_MATRIX_2X2(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[1][0];		\
-				\
-   b[1][0] = a[0][1];		\
-   b[1][1] = a[1][1];		\
-}
-
-/* ========================================================== */
-/* matrix transpose */
-
-#define TRANSPOSE_MATRIX_3X3(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[1][0];		\
-   b[0][2] = a[2][0];		\
-				\
-   b[1][0] = a[0][1];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[2][1];		\
-				\
-   b[2][0] = a[0][2];		\
-   b[2][1] = a[1][2];		\
-   b[2][2] = a[2][2];		\
-}
-
-/* ========================================================== */
-/* matrix transpose */
-
-#define TRANSPOSE_MATRIX_4X4(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[1][0];		\
-   b[0][2] = a[2][0];		\
-   b[0][3] = a[3][0];		\
-				\
-   b[1][0] = a[0][1];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[2][1];		\
-   b[1][3] = a[3][1];		\
-				\
-   b[2][0] = a[0][2];		\
-   b[2][1] = a[1][2];		\
-   b[2][2] = a[2][2];		\
-   b[2][3] = a[3][2];		\
-				\
-   b[3][0] = a[0][3];		\
-   b[3][1] = a[1][3];		\
-   b[3][2] = a[2][3];		\
-   b[3][3] = a[3][3];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define SCALE_MATRIX_2X2(b,s,a)		\
-{					\
-   b[0][0] = (s) * a[0][0];		\
-   b[0][1] = (s) * a[0][1];		\
-					\
-   b[1][0] = (s) * a[1][0];		\
-   b[1][1] = (s) * a[1][1];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define SCALE_MATRIX_3X3(b,s,a)		\
-{					\
-   b[0][0] = (s) * a[0][0];		\
-   b[0][1] = (s) * a[0][1];		\
-   b[0][2] = (s) * a[0][2];		\
-					\
-   b[1][0] = (s) * a[1][0];		\
-   b[1][1] = (s) * a[1][1];		\
-   b[1][2] = (s) * a[1][2];		\
-					\
-   b[2][0] = (s) * a[2][0];		\
-   b[2][1] = (s) * a[2][1];		\
-   b[2][2] = (s) * a[2][2];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define SCALE_MATRIX_4X4(b,s,a)		\
-{					\
-   b[0][0] = (s) * a[0][0];		\
-   b[0][1] = (s) * a[0][1];		\
-   b[0][2] = (s) * a[0][2];		\
-   b[0][3] = (s) * a[0][3];		\
-					\
-   b[1][0] = (s) * a[1][0];		\
-   b[1][1] = (s) * a[1][1];		\
-   b[1][2] = (s) * a[1][2];		\
-   b[1][3] = (s) * a[1][3];		\
-					\
-   b[2][0] = (s) * a[2][0];		\
-   b[2][1] = (s) * a[2][1];		\
-   b[2][2] = (s) * a[2][2];		\
-   b[2][3] = (s) * a[2][3];		\
-					\
-   b[3][0] = s * a[3][0];		\
-   b[3][1] = s * a[3][1];		\
-   b[3][2] = s * a[3][2];		\
-   b[3][3] = s * a[3][3];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define ACCUM_SCALE_MATRIX_2X2(b,s,a)		\
-{					\
-   b[0][0] += (s) * a[0][0];		\
-   b[0][1] += (s) * a[0][1];		\
-					\
-   b[1][0] += (s) * a[1][0];		\
-   b[1][1] += (s) * a[1][1];		\
-}
-
-/* +========================================================== */
-/* multiply matrix by scalar */
-
-#define ACCUM_SCALE_MATRIX_3X3(b,s,a)		\
-{					\
-   b[0][0] += (s) * a[0][0];		\
-   b[0][1] += (s) * a[0][1];		\
-   b[0][2] += (s) * a[0][2];		\
-					\
-   b[1][0] += (s) * a[1][0];		\
-   b[1][1] += (s) * a[1][1];		\
-   b[1][2] += (s) * a[1][2];		\
-					\
-   b[2][0] += (s) * a[2][0];		\
-   b[2][1] += (s) * a[2][1];		\
-   b[2][2] += (s) * a[2][2];		\
-}
-
-/* +========================================================== */
-/* multiply matrix by scalar */
-
-#define ACCUM_SCALE_MATRIX_4X4(b,s,a)		\
-{					\
-   b[0][0] += (s) * a[0][0];		\
-   b[0][1] += (s) * a[0][1];		\
-   b[0][2] += (s) * a[0][2];		\
-   b[0][3] += (s) * a[0][3];		\
-					\
-   b[1][0] += (s) * a[1][0];		\
-   b[1][1] += (s) * a[1][1];		\
-   b[1][2] += (s) * a[1][2];		\
-   b[1][3] += (s) * a[1][3];		\
-					\
-   b[2][0] += (s) * a[2][0];		\
-   b[2][1] += (s) * a[2][1];		\
-   b[2][2] += (s) * a[2][2];		\
-   b[2][3] += (s) * a[2][3];		\
-					\
-   b[3][0] += (s) * a[3][0];		\
-   b[3][1] += (s) * a[3][1];		\
-   b[3][2] += (s) * a[3][2];		\
-   b[3][3] += (s) * a[3][3];		\
-}
-
-/* +========================================================== */
-/* matrix product */
-/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
-
-#define MATRIX_PRODUCT_2X2(c,a,b)		\
-{						\
-   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0];	\
-   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1];	\
-						\
-   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0];	\
-   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1];	\
-						\
-}
-
-/* ========================================================== */
-/* matrix product */
-/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
-
-#define MATRIX_PRODUCT_3X3(c,a,b)				\
-{								\
-   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0];	\
-   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1];	\
-   c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2];	\
-								\
-   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0];	\
-   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1];	\
-   c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2];	\
-								\
-   c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0];	\
-   c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1];	\
-   c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2];	\
-}
-
-/* ========================================================== */
-/* matrix product */
-/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
-
-#define MATRIX_PRODUCT_4X4(c,a,b)		\
-{						\
-   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0];\
-   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1];\
-   c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2];\
-   c[0][3] = a[0][0]*b[0][3]+a[0][1]*b[1][3]+a[0][2]*b[2][3]+a[0][3]*b[3][3];\
-						\
-   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]+a[1][3]*b[3][0];\
-   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1];\
-   c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]+a[1][3]*b[3][2];\
-   c[1][3] = a[1][0]*b[0][3]+a[1][1]*b[1][3]+a[1][2]*b[2][3]+a[1][3]*b[3][3];\
-						\
-   c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]+a[2][3]*b[3][0];\
-   c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]+a[2][3]*b[3][1];\
-   c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]+a[2][3]*b[3][2];\
-   c[2][3] = a[2][0]*b[0][3]+a[2][1]*b[1][3]+a[2][2]*b[2][3]+a[2][3]*b[3][3];\
-						\
-   c[3][0] = a[3][0]*b[0][0]+a[3][1]*b[1][0]+a[3][2]*b[2][0]+a[3][3]*b[3][0];\
-   c[3][1] = a[3][0]*b[0][1]+a[3][1]*b[1][1]+a[3][2]*b[2][1]+a[3][3]*b[3][1];\
-   c[3][2] = a[3][0]*b[0][2]+a[3][1]*b[1][2]+a[3][2]*b[2][2]+a[3][3]*b[3][2];\
-   c[3][3] = a[3][0]*b[0][3]+a[3][1]*b[1][3]+a[3][2]*b[2][3]+a[3][3]*b[3][3];\
-}
-
-/* ========================================================== */
-/* matrix times vector */
-
-#define MAT_DOT_VEC_2X2(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1];				\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1];				\
-}
-
-/* ========================================================== */
-/* matrix times vector */
-
-#define MAT_DOT_VEC_3X3(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2];		\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2];		\
-   p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2];		\
-}
-
-/* ========================================================== */
-/* matrix times vector */
-
-#define MAT_DOT_VEC_4X4(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]*v[3];	\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]*v[3];	\
-   p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]*v[3];	\
-   p[3] = m[3][0]*v[0] + m[3][1]*v[1] + m[3][2]*v[2] + m[3][3]*v[3];	\
-}
-
-/* ========================================================== */
-/* vector transpose times matrix */
-/* p[j] = v[0]*m[0][j] + v[1]*m[1][j] + v[2]*m[2][j]; */
-
-#define VEC_DOT_MAT_3X3(p,v,m)					\
-{								\
-   p[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0];		\
-   p[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1];		\
-   p[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2];		\
-}
-
-/* ========================================================== */
-/* affine matrix times vector */
-/* The matrix is assumed to be an affine matrix, with last two 
- * entries representing a translation */
-
-#define MAT_DOT_VEC_2X3(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2];		\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2];		\
-}
-
-/* ========================================================== */
-/* inverse transpose of matrix times vector
- *
- * This macro computes inverse transpose of matrix m, 
- * and multiplies vector v into it, to yeild vector p
- *
- * DANGER !!! Do Not use this on normal vectors!!!
- * It will leave normals the wrong length !!!
- * See macro below for use on normals.
- */
-
-#define INV_TRANSP_MAT_DOT_VEC_2X2(p,m,v)			\
-{								\
-   gleDouble det;						\
-								\
-   det = m[0][0]*m[1][1] - m[0][1]*m[1][0];			\
-   p[0] = m[1][1]*v[0] - m[1][0]*v[1];				\
-   p[1] = - m[0][1]*v[0] + m[0][0]*v[1];			\
-								\
-   /* if matrix not singular, and not orthonormal, then renormalize */ \
-   if ((det!=1.0) && (det != 0.0)) {				\
-      det = 1.0 / det;						\
-      p[0] *= det;						\
-      p[1] *= det;						\
-   }								\
-}
-
-/* ========================================================== */
-/* transform normal vector by inverse transpose of matrix 
- * and then renormalize the vector 
- *
- * This macro computes inverse transpose of matrix m, 
- * and multiplies vector v into it, to yeild vector p
- * Vector p is then normalized.
- */
-
-
-#define NORM_XFORM_2X2(p,m,v)					\
-{								\
-   double mlen;							\
-								\
-   /* do nothing if off-diagonals are zero and diagonals are 	\
-    * equal */							\
-   if ((m[0][1] != 0.0) || (m[1][0] != 0.0) || (m[0][0] != m[1][1])) { \
-      p[0] = m[1][1]*v[0] - m[1][0]*v[1];			\
-      p[1] = - m[0][1]*v[0] + m[0][0]*v[1];			\
-								\
-      mlen = p[0]*p[0] + p[1]*p[1];				\
-      mlen = 1.0 / sqrt (mlen);					\
-      p[0] *= mlen;						\
-      p[1] *= mlen;						\
-   } else {							\
-      VEC_COPY_2 (p, v);					\
-   }								\
-}
-
-/* ========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define OUTER_PRODUCT_2X2(m,v,t)				\
-{								\
-   m[0][0] = v[0] * t[0];					\
-   m[0][1] = v[0] * t[1];					\
-								\
-   m[1][0] = v[1] * t[0];					\
-   m[1][1] = v[1] * t[1];					\
-}
-
-/* ========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define OUTER_PRODUCT_3X3(m,v,t)				\
-{								\
-   m[0][0] = v[0] * t[0];					\
-   m[0][1] = v[0] * t[1];					\
-   m[0][2] = v[0] * t[2];					\
-								\
-   m[1][0] = v[1] * t[0];					\
-   m[1][1] = v[1] * t[1];					\
-   m[1][2] = v[1] * t[2];					\
-								\
-   m[2][0] = v[2] * t[0];					\
-   m[2][1] = v[2] * t[1];					\
-   m[2][2] = v[2] * t[2];					\
-}
-
-/* ========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define OUTER_PRODUCT_4X4(m,v,t)				\
-{								\
-   m[0][0] = v[0] * t[0];					\
-   m[0][1] = v[0] * t[1];					\
-   m[0][2] = v[0] * t[2];					\
-   m[0][3] = v[0] * t[3];					\
-								\
-   m[1][0] = v[1] * t[0];					\
-   m[1][1] = v[1] * t[1];					\
-   m[1][2] = v[1] * t[2];					\
-   m[1][3] = v[1] * t[3];					\
-								\
-   m[2][0] = v[2] * t[0];					\
-   m[2][1] = v[2] * t[1];					\
-   m[2][2] = v[2] * t[2];					\
-   m[2][3] = v[2] * t[3];					\
-								\
-   m[3][0] = v[3] * t[0];					\
-   m[3][1] = v[3] * t[1];					\
-   m[3][2] = v[3] * t[2];					\
-   m[3][3] = v[3] * t[3];					\
-}
-
-/* +========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define ACCUM_OUTER_PRODUCT_2X2(m,v,t)				\
-{								\
-   m[0][0] += v[0] * t[0];					\
-   m[0][1] += v[0] * t[1];					\
-								\
-   m[1][0] += v[1] * t[0];					\
-   m[1][1] += v[1] * t[1];					\
-}
-
-/* +========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define ACCUM_OUTER_PRODUCT_3X3(m,v,t)				\
-{								\
-   m[0][0] += v[0] * t[0];					\
-   m[0][1] += v[0] * t[1];					\
-   m[0][2] += v[0] * t[2];					\
-								\
-   m[1][0] += v[1] * t[0];					\
-   m[1][1] += v[1] * t[1];					\
-   m[1][2] += v[1] * t[2];					\
-								\
-   m[2][0] += v[2] * t[0];					\
-   m[2][1] += v[2] * t[1];					\
-   m[2][2] += v[2] * t[2];					\
-}
-
-/* +========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define ACCUM_OUTER_PRODUCT_4X4(m,v,t)				\
-{								\
-   m[0][0] += v[0] * t[0];					\
-   m[0][1] += v[0] * t[1];					\
-   m[0][2] += v[0] * t[2];					\
-   m[0][3] += v[0] * t[3];					\
-								\
-   m[1][0] += v[1] * t[0];					\
-   m[1][1] += v[1] * t[1];					\
-   m[1][2] += v[1] * t[2];					\
-   m[1][3] += v[1] * t[3];					\
-								\
-   m[2][0] += v[2] * t[0];					\
-   m[2][1] += v[2] * t[1];					\
-   m[2][2] += v[2] * t[2];					\
-   m[2][3] += v[2] * t[3];					\
-								\
-   m[3][0] += v[3] * t[0];					\
-   m[3][1] += v[3] * t[1];					\
-   m[3][2] += v[3] * t[2];					\
-   m[3][3] += v[3] * t[3];					\
-}
-
-/* +========================================================== */
-/* determinant of matrix
- *
- * Computes determinant of matrix m, returning d
- */
-
-#define DETERMINANT_2X2(d,m)					\
-{								\
-   d = m[0][0] * m[1][1] - m[0][1] * m[1][0];			\
-}
-
-/* ========================================================== */
-/* determinant of matrix
- *
- * Computes determinant of matrix m, returning d
- */
-
-#define DETERMINANT_3X3(d,m)					\
-{								\
-   d = m[0][0] * (m[1][1]*m[2][2] - m[1][2] * m[2][1]);		\
-   d -= m[0][1] * (m[1][0]*m[2][2] - m[1][2] * m[2][0]);	\
-   d += m[0][2] * (m[1][0]*m[2][1] - m[1][1] * m[2][0]);	\
-}
-
-/* ========================================================== */
-/* i,j,th cofactor of a 4x4 matrix
- *
- */
-
-#define COFACTOR_4X4_IJ(fac,m,i,j) 				\
-{								\
-   int ii[4], jj[4], k;						\
-								\
-   /* compute which row, columnt to skip */			\
-   for (k=0; k<i; k++) ii[k] = k;				\
-   for (k=i; k<3; k++) ii[k] = k+1;				\
-   for (k=0; k<j; k++) jj[k] = k;				\
-   for (k=j; k<3; k++) jj[k] = k+1;				\
-								\
-   (fac) = m[ii[0]][jj[0]] * (m[ii[1]][jj[1]]*m[ii[2]][jj[2]] 	\
-                            - m[ii[1]][jj[2]]*m[ii[2]][jj[1]]); \
-   (fac) -= m[ii[0]][jj[1]] * (m[ii[1]][jj[0]]*m[ii[2]][jj[2]]	\
-                             - m[ii[1]][jj[2]]*m[ii[2]][jj[0]]);\
-   (fac) += m[ii[0]][jj[2]] * (m[ii[1]][jj[0]]*m[ii[2]][jj[1]]	\
-                             - m[ii[1]][jj[1]]*m[ii[2]][jj[0]]);\
-								\
-   /* compute sign */						\
-   k = i+j;							\
-   if ( k != (k/2)*2) {						\
-      (fac) = -(fac);						\
-   }								\
-}
-
-/* ========================================================== */
-/* determinant of matrix
- *
- * Computes determinant of matrix m, returning d
- */
-
-#define DETERMINANT_4X4(d,m)					\
-{								\
-   double cofac;						\
-   COFACTOR_4X4_IJ (cofac, m, 0, 0);				\
-   d = m[0][0] * cofac;						\
-   COFACTOR_4X4_IJ (cofac, m, 0, 1);				\
-   d += m[0][1] * cofac;					\
-   COFACTOR_4X4_IJ (cofac, m, 0, 2);				\
-   d += m[0][2] * cofac;					\
-   COFACTOR_4X4_IJ (cofac, m, 0, 3);				\
-   d += m[0][3] * cofac;					\
-}
-
-/* ========================================================== */
-/* cofactor of matrix
- *
- * Computes cofactor of matrix m, returning a
- */
-
-#define COFACTOR_2X2(a,m)					\
-{								\
-   a[0][0] = (m)[1][1];						\
-   a[0][1] = - (m)[1][0];						\
-   a[1][0] = - (m)[0][1];						\
-   a[1][1] = (m)[0][0];						\
-}
-
-/* ========================================================== */
-/* cofactor of matrix
- *
- * Computes cofactor of matrix m, returning a
- */
-
-#define COFACTOR_3X3(a,m)					\
-{								\
-   a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1];			\
-   a[0][1] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]);		\
-   a[0][2] = m[1][0]*m[2][1] - m[1][1]*m[2][0];			\
-   a[1][0] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]);		\
-   a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0];			\
-   a[1][2] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]);		\
-   a[2][0] = m[0][1]*m[1][2] - m[0][2]*m[1][1];			\
-   a[2][1] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]);		\
-   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);		\
-}
-
-/* ========================================================== */
-/* cofactor of matrix
- *
- * Computes cofactor of matrix m, returning a
- */
-
-#define COFACTOR_4X4(a,m)					\
-{								\
-   int i,j;							\
-								\
-   for (i=0; i<4; i++) {					\
-      for (j=0; j<4; j++) {					\
-         COFACTOR_4X4_IJ (a[i][j], m, i, j);			\
-      }								\
-   }								\
-}
-
-/* ========================================================== */
-/* adjoint of matrix
- *
- * Computes adjoint of matrix m, returning a
- * (Note that adjoint is just the transpose of the cofactor matrix)
- */
-
-#define ADJOINT_2X2(a,m)					\
-{								\
-   a[0][0] = (m)[1][1];						\
-   a[1][0] = - (m)[1][0];						\
-   a[0][1] = - (m)[0][1];						\
-   a[1][1] = (m)[0][0];						\
-}
-
-/* ========================================================== */
-/* adjoint of matrix
- *
- * Computes adjoint of matrix m, returning a
- * (Note that adjoint is just the transpose of the cofactor matrix)
- */
-
-
-#define ADJOINT_3X3(a,m)					\
-{								\
-   a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1];			\
-   a[1][0] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]);		\
-   a[2][0] = m[1][0]*m[2][1] - m[1][1]*m[2][0];			\
-   a[0][1] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]);		\
-   a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0];			\
-   a[2][1] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]);		\
-   a[0][2] = m[0][1]*m[1][2] - m[0][2]*m[1][1];			\
-   a[1][2] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]);		\
-   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);		\
-}
-
-/* ========================================================== */
-/* adjoint of matrix
- *
- * Computes adjoint of matrix m, returning a
- * (Note that adjoint is just the transpose of the cofactor matrix)
- */
-
-#define ADJOINT_4X4(a,m)					\
-{								\
-   int i,j;							\
-								\
-   for (i=0; i<4; i++) {					\
-      for (j=0; j<4; j++) {					\
-         COFACTOR_4X4_IJ (a[j][i], m, i, j);			\
-      }								\
-   }								\
-}
-
-/* ========================================================== */
-/* compute adjoint of matrix and scale
- *
- * Computes adjoint of matrix m, scales it by s, returning a
- */
-
-#define SCALE_ADJOINT_2X2(a,s,m)				\
-{								\
-   a[0][0] = (s) * m[1][1];					\
-   a[1][0] = - (s) * m[1][0];					\
-   a[0][1] = - (s) * m[0][1];					\
-   a[1][1] = (s) * m[0][0];					\
-}
-
-/* ========================================================== */
-/* compute adjoint of matrix and scale
- *
- * Computes adjoint of matrix m, scales it by s, returning a
- */
-
-#define SCALE_ADJOINT_3X3(a,s,m)				\
-{								\
-   a[0][0] = (s) * (m[1][1] * m[2][2] - m[1][2] * m[2][1]);	\
-   a[1][0] = (s) * (m[1][2] * m[2][0] - m[1][0] * m[2][2]);	\
-   a[2][0] = (s) * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);	\
-								\
-   a[0][1] = (s) * (m[0][2] * m[2][1] - m[0][1] * m[2][2]);	\
-   a[1][1] = (s) * (m[0][0] * m[2][2] - m[0][2] * m[2][0]);	\
-   a[2][1] = (s) * (m[0][1] * m[2][0] - m[0][0] * m[2][1]);	\
-								\
-   a[0][2] = (s) * (m[0][1] * m[1][2] - m[0][2] * m[1][1]);	\
-   a[1][2] = (s) * (m[0][2] * m[1][0] - m[0][0] * m[1][2]);	\
-   a[2][2] = (s) * (m[0][0] * m[1][1] - m[0][1] * m[1][0]);	\
-}
-
-/* ========================================================== */
-/* compute adjoint of matrix and scale
- *
- * Computes adjoint of matrix m, scales it by s, returning a
- */
-
-#define SCALE_ADJOINT_4X4(a,s,m)				\
-{								\
-   int i,j;							\
-								\
-   for (i=0; i<4; i++) {					\
-      for (j=0; j<4; j++) {					\
-         COFACTOR_4X4_IJ (a[j][i], m, i, j);			\
-         a[j][i] *= s;						\
-      }								\
-   }								\
-}
-
-/* ========================================================== */
-/* inverse of matrix 
- *
- * Compute inverse of matrix a, returning determinant m and 
- * inverse b
- */
-
-#define INVERT_2X2(b,det,a)			\
-{						\
-   double tmp;					\
-   DETERMINANT_2X2 (det, a);			\
-   tmp = 1.0 / (det);				\
-   SCALE_ADJOINT_2X2 (b, tmp, a);		\
-}
-
-/* ========================================================== */
-/* inverse of matrix 
- *
- * Compute inverse of matrix a, returning determinant m and 
- * inverse b
- */
-
-#define INVERT_3X3(b,det,a)			\
-{						\
-   double tmp;					\
-   DETERMINANT_3X3 (det, a);			\
-   tmp = 1.0 / (det);				\
-   SCALE_ADJOINT_3X3 (b, tmp, a);		\
-}
-
-/* ========================================================== */
-/* inverse of matrix 
- *
- * Compute inverse of matrix a, returning determinant m and 
- * inverse b
- */
-
-#define INVERT_4X4(b,det,a)			\
-{						\
-   double tmp;					\
-   DETERMINANT_4X4 (det, a);			\
-   tmp = 1.0 / (det);				\
-   SCALE_ADJOINT_4X4 (b, tmp, a);		\
-}
-
-/* ========================================================== */
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif /* __GUTIL_VECTOR_H__ */
-/* ===================== END OF FILE ======================== */
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/Caution.tiff has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUT.nib/classes.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {save = id; saveAs = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {timerAction = id; }; 
-            CLASS = GLUTApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                "_aboutMenuItem" = NSMenuItem; 
-                "_hideMenuItem" = NSMenuItem; 
-                "_quitMenuItem" = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {toggleWindow = id; }; 
-            CLASS = GLUTClipboardController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {"_infoText" = id; "_scrollView" = id; }; 
-            SUPERCLASS = NSWindowController; 
-        }, 
-        {
-            ACTIONS = {
-                assign = id; 
-                cancel = id; 
-                inputMenu = id; 
-                invertInput = id; 
-                mouseMatrix = id; 
-                mousePreset = id; 
-                ok = id; 
-                setDefault = id; 
-            }; 
-            CLASS = GLUTPreferencesController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                assignPrompt = NSTextField; 
-                assignText = NSTextField; 
-                inputMenu = NSPopUpButton; 
-                inverted = NSButton; 
-                mbConfigMenu = NSPopUpButton; 
-                mbConfigWarningIcon = NSImageView; 
-                mbConfigWarningText = NSTextField; 
-                middleButtonMatrix = NSMatrix; 
-                rightButtonMatrix = NSMatrix; 
-            }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUT.nib/info.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>4 104 410 240 0 0 1152 848 </string>
-	<key>IBEditorPositions</key>
-	<dict>
-		<key>29</key>
-		<string>19 615 246 44 0 0 1152 848 </string>
-	</dict>
-	<key>IBFramework Version</key>
-	<string>291.0</string>
-	<key>IBGroupedObjects</key>
-	<dict/>
-	<key>IBLastGroupID</key>
-	<string>1</string>
-	<key>IBOpenObjects</key>
-	<array>
-		<integer>29</integer>
-	</array>
-	<key>IBSystem Version</key>
-	<string>6I32</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUT.nib/objects.nib has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTClipboard.nib/classes.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-{
-    IBClasses = (
-        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
-        {
-            ACTIONS = {toggleWindow = id; }; 
-            CLASS = GLUTClipboardController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {_infoText = id; _scrollView = id; }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTClipboard.nib/info.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
-<plist version="0.9">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>63 221 356 240 0 0 1600 1178 </string>
-	<key>IBFramework Version</key>
-	<string>263.2</string>
-	<key>IBSystem Version</key>
-	<string>5S41</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTClipboard.nib/objects.nib has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTPreferences.nib/classes.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {save = id; saveAs = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {
-                cancel = id; 
-                joyAssign = id; 
-                joyDevice = id; 
-                joyElement = id; 
-                joyInvert = id; 
-                launchDebugMode = id; 
-                launchGamemodeCaptureSingle = id; 
-                launchIconic = id; 
-                launchUseCurrWD = id; 
-                launchUseExtDesktop = id; 
-                launchUseMacOSCoords = id; 
-                mouseEanbleEmulation = id; 
-                mouseMiddleMenu = id; 
-                mouseRightMenu = id; 
-                ok = id; 
-                spaceAssign = id; 
-                spaceDevice = id; 
-                spaceElement = id; 
-                spaceInvert = id; 
-            }; 
-            CLASS = GLUTPreferencesController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                joyAssign = NSButton; 
-                joyAssignNote = NSTextField; 
-                joyAssignWarningIcon = NSImageView; 
-                joyDeviceMenu = NSPopUpButton; 
-                joyElement = NSTextField; 
-                joyInputMenu = NSPopUpButton; 
-                joyInverted = NSButton; 
-                launchDebugMode = NSButton; 
-                launchFadeTime = NSTextField; 
-                launchGamemodeCaptureSingle = NSButton; 
-                launchIconic = NSButton; 
-                launchInitHeight = NSTextField; 
-                launchInitWidth = NSTextField; 
-                launchInitX = NSTextField; 
-                launchInitY = NSTextField; 
-                launchMenuIdle = NSTextField; 
-                launchSyncToVBL = NSButton; 
-                launchUseCurrWD = NSButton; 
-                launchUseExtendedDesktop = NSButton; 
-                launchUseMacOSXCoords = NSButton; 
-                mouseAssignWarningIcon = NSImageView; 
-                mouseAssignWarningText = NSTextField; 
-                mouseDetected = NSTextField; 
-                mouseEmulation = NSButton; 
-                mouseMiddleConfigMenu = NSPopUpButton; 
-                mouseRightConfigMenu = NSPopUpButton; 
-                prefsTabView = NSTabView; 
-                spaceAssign = NSButton; 
-                spaceAssignNote = NSTextField; 
-                spaceAssignWarningIcon = NSImageView; 
-                spaceDeviceMenu = NSPopUpButton; 
-                spaceElement = NSTextField; 
-                spaceInputMenu = NSPopUpButton; 
-                spaceInverted = NSButton; 
-            }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTPreferences.nib/info.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>16 329 410 240 0 0 1920 1178 </string>
-	<key>IBFramework Version</key>
-	<string>439.0</string>
-	<key>IBOpenObjects</key>
-	<array>
-		<integer>205</integer>
-	</array>
-	<key>IBSystem Version</key>
-	<string>8G32</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTPreferences.nib/objects.nib has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/GLUTUI.strings has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/English.lproj/InfoPlist.strings has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/Info.plist	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>GLUT</string>
-	<key>CFBundleGetInfoString</key>
-	<string>3.4.0, Copyright (c) 2001-2008 Apple Inc., All Rights Reserved</string>
-	<key>CFBundleIdentifier</key>
-	<string>com.apple.glut</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundlePackageType</key>
-	<string>FMWK</string>
-	<key>CFBundleShortVersionString</key>
-	<string>3.4.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>GLUT-3.4.0</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/blankCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/bottomCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/bottomleftCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/bottomrightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/crossCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/cycleCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/destroyCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/fingerCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/helpCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/leftCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/leftRightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/rightArrowCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/rightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/sprayCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/topCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/topleftCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/toprightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/upDownCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/A/Resources/waitCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/GLUT has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/copy.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-
-/*
- *
- * Written By Linas Vepstas November 1991 
- */
-
-
-#define COPY_THREE_WORDS(A,B) {						\
-	struct three_words { int a, b, c, };				\
-	*(struct three_words *) (A) = *(struct three_words *) (B);	\
-}
-
-#define COPY_FOUR_WORDS(A,B) {						\
-	struct four_words { int a, b, c, d, };				\
-	*(struct four_words *) (A) = *(struct four_words *) (B);	\
-}
-
-/* ============================================================= */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/extrude.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-
-/*
- * extrude.h
- *
- * FUNCTION:
- * prototypes for privately used subroutines for the tubing library
- *
- * HISTORY:
- * Linas Vepstas 1991
- */
- 
-#include "port.h" /* for gleDouble */
-
-#ifndef M_PI
-#define M_PI  3.14159265358979323846
-#endif
-
-/* ============================================================ */
-/* 
- * Provides choice of calling subroutine, vs. invoking macro.
- * Basically, inlines the source, or not.
- * Trades performance for executable size.
- */
-
-#define INLINE_INTERSECT
-#ifdef INLINE_INTERSECT
-#define INNERSECT(sect,p,n,v1,v2) { INTERSECT(sect,p,n,v1,v2); }
-#else
-#define INNERSECT(sect,p,n,v1,v2) intersect(sect,p,n,v1,v2)
-#endif /* INLINE_INTERSECT */
-
-/* ============================================================ */
-/* The folowing defines give a kludgy way of accessing the qmesh primitive */
-
-/*
-#define bgntmesh _emu_qmesh_bgnqmesh
-#define endtmesh _emu_qmesh_endqmesh
-#define c3f _emu_qmesh_c3f
-#define n3f _emu_qmesh_n3f
-#define v3f _emu_qmesh_v3f
-*/
-
-/* ============================================================ */
-
-extern void up_sanity_check (gleDouble up[3],      /* up vector for contour */
-                      int npoints,              /* numpoints in poly-line */
-                      gleDouble point_array[][3]);   /* polyline */
-
-
-extern void draw_raw_style_end_cap (int ncp,     /* number of contour points */
-                             gleDouble contour[][2],     /* 2D contour */
-                             gleDouble zval,             /* where to draw cap */
-                             int frontwards);    /* front or back cap */
-
-extern void draw_round_style_cap_callback (int iloop,
-                                  double cap[][3],
-                                  float face_color[3],
-                                  gleDouble cut_vector[3],
-                                  gleDouble bisect_vector[3],
-                                  double norms[][3],
-                                  int frontwards);
-
-extern void draw_angle_style_front_cap (int ncp,
-                           gleDouble bi[3],
-                           gleDouble point_array[][3]);
-
-extern void extrusion_raw_join (int ncp,        /* number of contour points */
-                         gleDouble contour[][2],    /* 2D contour */
-                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
-                         gleDouble up[3],           /* up vector for contour */
-                         int npoints,           /* numpoints in poly-line */
-                         gleDouble point_array[][3],        /* polyline */
-                         float color_array[][3],        /* color of polyline */
-                         gleDouble xform_array[][2][3]);  /* 2D contour xforms */
-
-
-extern void extrusion_round_or_cut_join (int ncp, /* number of contour points */
-                         gleDouble contour[][2],    /* 2D contour */
-                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
-                           gleDouble up[3],         /* up vector for contour */
-                           int npoints,         /* numpoints in poly-line */
-                           gleDouble point_array[][3],      /* polyline */
-                           float color_array[][3],      /* color of polyline */
-                           gleDouble xform_array[][2][3]);  /* 2D contour xforms */
-
-
-extern void extrusion_angle_join (int ncp,      /* number of contour points */
-                         gleDouble contour[][2],    /* 2D contour */
-                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
-                           gleDouble up[3],         /* up vector for contour */
-                           int npoints,         /* numpoints in poly-line */
-                           gleDouble point_array[][3],      /* polyline */
-                           float color_array[][3],      /* color of polyline */
-                           gleDouble xform_array[][2][3]);  /* 2D contour xforms */
-
-/* -------------------------- end of file -------------------------------- */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glsmap.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-#ifndef __glsmap_h__
-#define __glsmap_h__
-
-/* Copyright (c) Mark J. Kilgard, 1998.  */
-
-/* This program is freely distributable without licensing fees
-   and is provided without guarantee or warrantee expressed or
-   implied. This program is -not- in the public domain. */
-
-#if defined(_WIN32)
-
-/* Try hard to avoid including <windows.h> to avoid name space pollution,
-   but Win32's <GL/gl.h> needs APIENTRY and WINGDIAPI defined properly. */
-# if 0
-#  define  WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-# else
-   /* XXX This is from Win32's <windef.h> */
-#  ifndef APIENTRY
-#   if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
-#    define APIENTRY    __stdcall
-#   else
-#    define APIENTRY
-#   endif
-#  endif
-#  ifndef CALLBACK
-    /* XXX This is from Win32's <winnt.h> */
-#   if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
-#    define CALLBACK __stdcall
-#   else
-#    define CALLBACK
-#   endif
-#  endif
-   /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
-#  ifndef WINGDIAPI
-#   define WINGDIAPI __declspec(dllimport)
-#  endif
-   /* XXX This is from Win32's <ctype.h> */
-#  ifndef _WCHAR_T_DEFINED
-typedef unsigned short wchar_t;
-#   define _WCHAR_T_DEFINED
-#  endif
-# endif
-
-#pragma warning (disable:4244)	/* Disable bogus conversion warnings. */
-#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-
-#endif /* _WIN32 */
-
-#include <OpenGL/gl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-        SMAP_CLEAR_SMAP_TEXTURE = 0x1,
-        SMAP_GENERATE_VIEW_MIPMAPS = 0x2,
-        SMAP_GENERATE_SMAP_MIPMAPS = 0x4,
-        SMAP_GENERATE_MIPMAPS = 0x6  /* both of above */
-} SphereMapFlags;
-
-/* Cube view enumerants. */
-enum {
-	SMAP_FRONT = 0,
-	SMAP_TOP = 1,
-	SMAP_BOTTOM = 2,
-	SMAP_LEFT = 3,
-	SMAP_RIGHT = 4,
-	SMAP_BACK = 5
-};
-
-typedef struct _SphereMap SphereMap;
-
-extern SphereMap *smapCreateSphereMap(SphereMap *shareSmap);
-extern void smapDestroySphereMap(SphereMap *smap);
-
-extern void smapConfigureSphereMapMesh(SphereMap *smap, int steps, int rings, int edgeExtend);
-
-extern void smapSetSphereMapTexObj(SphereMap *smap, GLuint texobj);
-extern void smapSetViewTexObj(SphereMap *smap, GLuint texobj);
-extern void smapSetViewTexObjs(SphereMap *smap, GLuint texobjs[6]);
-extern void smapGetSphereMapTexObj(SphereMap *smap, GLuint *texobj);
-extern void smapGetViewTexObj(SphereMap *smap, GLuint *texobj);
-extern void smapGetViewTexObjs(SphereMap *smap, GLuint texobjs[6]);
-
-extern void smapSetFlags(SphereMap *smap, SphereMapFlags flags);
-extern void smapGetFlags(SphereMap *smap, SphereMapFlags *flags);
-
-extern void smapSetViewOrigin(SphereMap *smap, GLint x, GLint y);
-extern void smapSetSphereMapOrigin(SphereMap *smap, GLint x, GLint y);
-extern void smapGetViewOrigin(SphereMap *smap, GLint *x, GLint *y);
-extern void smapGetSphereMapOrigin(SphereMap *smap, GLint *x, GLint *y);
-
-extern void smapSetEye(SphereMap *smap, GLfloat eyex, GLfloat eyey,	GLfloat eyez);
-extern void smapSetEyeVector(SphereMap *smap, GLfloat *eye);
-extern void smapSetUp(SphereMap *smap, GLfloat upx, GLfloat upy, GLfloat upz);
-extern void smapSetUpVector(SphereMap *smap, GLfloat *up);
-extern void smapSetObject(SphereMap *smap, GLfloat objx, GLfloat objy, GLfloat objz);
-extern void smapSetObjectVector(SphereMap *smap, GLfloat *obj);
-extern void smapGetEye(SphereMap *smap, GLfloat *eyex, GLfloat *eyey, GLfloat *eyez);
-extern void smapGetEyeVector(SphereMap *smap, GLfloat *eye);
-extern void smapGetUp(SphereMap *smap, GLfloat *upx, GLfloat *upy, GLfloat *upz);
-extern void smapGetUpVector(SphereMap *smap, GLfloat *up);
-extern void smapGetObject(SphereMap *smap, GLfloat *objx, GLfloat *objy, GLfloat *objz);
-extern void smapGetObjectVector(SphereMap *smap, GLfloat *obj);
-
-extern void smapSetNearFar(SphereMap *smap, GLfloat viewNear, GLfloat viewFar);
-extern void smapGetNearFar(SphereMap *smap, GLfloat *viewNear, GLfloat *viewFar);
-
-extern void smapSetSphereMapTexDim(SphereMap *smap, GLsizei texdim);
-extern void smapSetViewTexDim(SphereMap *smap, GLsizei texdim);
-extern void smapGetSphereMapTexDim(SphereMap *smap, GLsizei *texdim);
-extern void smapGetViewTexDim(SphereMap *smap, GLsizei *texdim);
-
-extern void smapSetContextData(SphereMap *smap, void *context);
-extern void smapGetContextData(SphereMap *smap, void **context);
-
-extern void smapSetPositionLightsFunc(SphereMap *smap, void (*positionLights)(int view, void *context));
-extern void smapSetDrawViewFunc(SphereMap *smap, void (*drawView)(int view, void *context));
-extern void smapGetPositionLightsFunc(SphereMap *smap, void (**positionLights)(int view, void *context));
-extern void smapGetDrawViewFunc(SphereMap *smap, void (**drawView)(int view, void *context));
-
-extern void smapGenViewTex(SphereMap *smap, int view);
-extern void smapGenViewTexs(SphereMap *smap);
-extern void smapGenSphereMapFromViewTexs(SphereMap *smap);
-extern void smapGenSphereMap(SphereMap *smap);
-extern void smapGenSphereMapWithOneViewTex(SphereMap *smap);
-
-extern int smapRvecToSt(float rvec[3], float st[2]);
-extern void smapStToRvec(float *st, float *rvec);
-
-#ifdef __cplusplus
-}
-
-#endif
-#endif /* __glsmap_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glsmapint.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-#ifndef __glsmapint_h__
-#define __glsmapint_h__
-
-/* Copyright (c) Mark J. Kilgard, 1998. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#include "glsmap.h"
-
-enum { X = 0, Y = 1, Z = 2 };
-
-#define INITFACE(mesh) \
-	int steps = mesh->steps; \
-	int sqsteps = mesh->steps * mesh->steps
-
-#define FACE(side,y,x) \
-	mesh->face[(side)*sqsteps + (y)*steps + (x)]
-
-#define FACExy(side,i,j) \
-	(&FACE(side,i,j).x)
-
-#define FACEst(side,i,j) \
-	(&FACE(side,i,j).s)
-
-#define INITBACK(mesh) \
-	int allrings = mesh->rings + mesh->edgeExtend; \
-	int ringedspokes = allrings * mesh->steps
-
-#define BACK(edge,ring,spoke) \
-	mesh->back[(edge)*ringedspokes + (ring)*mesh->steps + (spoke)]
-
-#define BACKxy(edge,ring,spoke) \
-	(&BACK(edge,ring,spoke).x)
-
-#define BACKst(edge,ring,spoke) \
-	(&BACK(edge,ring,spoke).s)
-
-typedef struct _STXY {
-	GLfloat s, t;
-	GLfloat x, y;
-} STXY;
-
-typedef struct _SphereMapMesh {
-
-	int refcnt;
-
-	int steps;
-	int rings;
-	int edgeExtend;
-
-	STXY *face;
-	STXY *back;
-
-} SphereMapMesh;
-
-struct _SphereMap {
-
-	/* Shared sphere map mesh vertex data. */
-	SphereMapMesh *mesh;
-
-	/* Texture object ids. */
-	GLuint smapTexObj;
-	GLuint viewTexObjs[6];
-	GLuint viewTexObj;
-
-        /* Flags */
-        SphereMapFlags flags;
-
-	/* Texture dimensions must be a power of two. */
-	int viewTexDim;  /* view texture dimension */
-	int smapTexDim;  /* sphere map texture dimension */
-
-	/* Viewport origins for view and sphere map rendering. */
-	int viewOrigin[2];
-	int smapOrigin[2];
-
-	/* Viewing vectors. */
-	GLfloat eye[3];
-	GLfloat up[3];
-	GLfloat obj[3];
-
-	/* Projection parameters. */
-	GLfloat viewNear;
-	GLfloat viewFar;
-
-	/* Rendering callbacks. */
-	void (*positionLights)(int view, void *context);
-	void (*drawView)(int view, void *context);
-
-	/* Application specified callback data. */
-	void *context;
-
-};
-
-/* Library internal routines. */
-extern void __smapDrawSphereMapMeshSide(SphereMapMesh *mesh, int side);
-extern void __smapDrawSphereMapMeshBack(SphereMapMesh *mesh);
-extern void __smapValidateSphereMapMesh(SphereMapMesh *mesh);
-
-#endif /* __glsmapint_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glut.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,644 +0,0 @@
-#ifndef __glut_h__
-#define __glut_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */
-
-/* This program is freely distributable without licensing fees  and is
-   provided without guarantee or warrantee expressed or  implied. This
-   program is -not- in the public domain. */
-
-#if defined(_WIN32)
-
-/* GLUT 3.7 now tries to avoid including <windows.h>
-   to avoid name space pollution, but Win32's <GL/gl.h> 
-   needs APIENTRY and WINGDIAPI defined properly. */
-# if 0
-#  define  WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-# else
-   /* XXX This is from Win32's <windef.h> */
-#  ifndef APIENTRY
-#   define GLUT_APIENTRY_DEFINED
-#   if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
-#    define APIENTRY    __stdcall
-#   else
-#    define APIENTRY
-#   endif
-#  endif
-   /* XXX This is from Win32's <winnt.h> */
-#  ifndef CALLBACK
-#   if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
-#    define CALLBACK __stdcall
-#   else
-#    define CALLBACK
-#   endif
-#  endif
-   /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
-#  ifndef WINGDIAPI
-#   define GLUT_WINGDIAPI_DEFINED
-#   define WINGDIAPI __declspec(dllimport)
-#  endif
-   /* XXX This is from Win32's <ctype.h> */
-#  ifndef _WCHAR_T_DEFINED
-typedef unsigned short wchar_t;
-#   define _WCHAR_T_DEFINED
-#  endif
-# endif
-
-#pragma comment (lib, "winmm.lib")     /* link with Windows MultiMedia lib */
-#pragma comment (lib, "opengl32.lib")  /* link with Microsoft OpenGL lib */
-#pragma comment (lib, "glu32.lib")     /* link with OpenGL Utility lib */
-#pragma comment (lib, "glut32.lib")    /* link with Win32 GLUT lib */
-
-#pragma warning (disable:4244)	/* Disable bogus conversion warnings. */
-#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-
-#endif
-
-#if defined(__APPLE__) || defined(MACOSX)
-#include <AvailabilityMacros.h>
-#include <OpenGL/gl.h>
-#include <OpenGL/glu.h>
-#else
-#include <GL/gl.h>
-#include <GL/glu.h>
-#endif
-
-/* define APIENTRY and CALLBACK to null string if we aren't on Win32 */
-#if !defined(_WIN32)
-#define APIENTRY
-#define GLUT_APIENTRY_DEFINED
-#define CALLBACK
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- GLUT API revision history:
- 
- GLUT_API_VERSION is updated to reflect incompatible GLUT
- API changes (interface changes, semantic changes, deletions,
- or additions).
- 
- GLUT_API_VERSION=1  First public release of GLUT.  11/29/94
-
- GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
- extension.  Supports new input devices like tablet, dial and button
- box, and Spaceball.  Easy to query OpenGL extensions.
-
- GLUT_API_VERSION=3  glutMenuStatus added.
-
- GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
- glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
- video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
- glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
- glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
-
- GLUT_API_VERSION=5  glutGetProcAddress (added by BrianP)
-**/
-#ifndef GLUT_API_VERSION  /* allow this to be overriden */
-#define GLUT_API_VERSION		5
-#endif
-
-/**
- GLUT implementation revision history:
- 
- GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
- API revisions and implementation revisions (ie, bug fixes).
-
- GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
- GLUT Xlib-based implementation.  11/29/94
-
- GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
- GLUT Xlib-based implementation providing GLUT version 2 
- interfaces.
-
- GLUT_XLIB_IMPLEMENTATION=3  mjk's GLUT 2.2 images. 4/17/95
-
- GLUT_XLIB_IMPLEMENTATION=4  mjk's GLUT 2.3 images. 6/?/95
-
- GLUT_XLIB_IMPLEMENTATION=5  mjk's GLUT 3.0 images. 10/?/95
-
- GLUT_XLIB_IMPLEMENTATION=7  mjk's GLUT 3.1+ with glutWarpPoitner.  7/24/96
-
- GLUT_XLIB_IMPLEMENTATION=8  mjk's GLUT 3.1+ with glutWarpPoitner
- and video resize.  1/3/97
-
- GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
-
- GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release.
-
- GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
-
- GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support.
-
- GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface.
-
- GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa <GL/glut.h>
-**/
-#ifndef GLUT_XLIB_IMPLEMENTATION  /* Allow this to be overriden. */
-#define GLUT_XLIB_IMPLEMENTATION	15
-#endif
-
-/**
- MacOS X GLUT implementation revision history:
- 
- GLUT_MACOSX_IMPLEMENTATION is updated to reflect MacOS X
- specific GLUT API revisions and implementation revisions
- (ie, bug fixes).
-
- GLUT_MACOSX_IMPLEMENTATION=1  glutSurfaceTexture.
-
- GLUT_MACOSX_IMPLEMENTATION=2  glutWMCloseFunc, glutCheckLoop.
-  
-**/
-#ifndef GLUT_MACOSX_IMPLEMENTATION  /* Allow this to be overriden. */
-#define GLUT_MACOSX_IMPLEMENTATION	2
-#endif
-
-/* Display mode bit masks. */
-#define GLUT_RGB			0
-#define GLUT_RGBA			GLUT_RGB
-#define GLUT_INDEX			1
-#define GLUT_SINGLE			0
-#define GLUT_DOUBLE			2
-#define GLUT_ACCUM			4
-#define GLUT_ALPHA			8
-#define GLUT_DEPTH			16
-#define GLUT_STENCIL			32
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_MULTISAMPLE		128
-#define GLUT_STEREO			256
-#endif
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_LUMINANCE			512
-#endif
-#define GLUT_NO_RECOVERY    1024
-
-/* Mouse buttons. */
-#define GLUT_LEFT_BUTTON		0
-#define GLUT_MIDDLE_BUTTON		1
-#define GLUT_RIGHT_BUTTON		2
-
-/* Mouse button  state. */
-#define GLUT_DOWN			0
-#define GLUT_UP				1
-
-#if (GLUT_API_VERSION >= 2)
-/* function keys */
-#define GLUT_KEY_F1			1
-#define GLUT_KEY_F2			2
-#define GLUT_KEY_F3			3
-#define GLUT_KEY_F4			4
-#define GLUT_KEY_F5			5
-#define GLUT_KEY_F6			6
-#define GLUT_KEY_F7			7
-#define GLUT_KEY_F8			8
-#define GLUT_KEY_F9			9
-#define GLUT_KEY_F10			10
-#define GLUT_KEY_F11			11
-#define GLUT_KEY_F12			12
-/* directional keys */
-#define GLUT_KEY_LEFT			100
-#define GLUT_KEY_UP			101
-#define GLUT_KEY_RIGHT			102
-#define GLUT_KEY_DOWN			103
-#define GLUT_KEY_PAGE_UP		104
-#define GLUT_KEY_PAGE_DOWN		105
-#define GLUT_KEY_HOME			106
-#define GLUT_KEY_END			107
-#define GLUT_KEY_INSERT			108
-#endif
-
-/* Entry/exit  state. */
-#define GLUT_LEFT			0
-#define GLUT_ENTERED			1
-
-/* Menu usage  state. */
-#define GLUT_MENU_NOT_IN_USE		0
-#define GLUT_MENU_IN_USE		1
-
-/* Visibility  state. */
-#define GLUT_NOT_VISIBLE		0
-#define GLUT_VISIBLE			1
-
-/* Window status  state. */
-#define GLUT_HIDDEN			0
-#define GLUT_FULLY_RETAINED		1
-#define GLUT_PARTIALLY_RETAINED		2
-#define GLUT_FULLY_COVERED		3
-
-/* Color index component selection values. */
-#define GLUT_RED			0
-#define GLUT_GREEN			1
-#define GLUT_BLUE			2
-
-/* Layers for use. */
-#define GLUT_NORMAL			0
-#define GLUT_OVERLAY			1
-
-#if defined(_WIN32)
-/* Stroke font constants (use these in GLUT program). */
-#define GLUT_STROKE_ROMAN		((void*)0)
-#define GLUT_STROKE_MONO_ROMAN		((void*)1)
-
-/* Bitmap font constants (use these in GLUT program). */
-#define GLUT_BITMAP_9_BY_15		((void*)2)
-#define GLUT_BITMAP_8_BY_13		((void*)3)
-#define GLUT_BITMAP_TIMES_ROMAN_10	((void*)4)
-#define GLUT_BITMAP_TIMES_ROMAN_24	((void*)5)
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_BITMAP_HELVETICA_10	((void*)6)
-#define GLUT_BITMAP_HELVETICA_12	((void*)7)
-#define GLUT_BITMAP_HELVETICA_18	((void*)8)
-#endif
-#else
-/* Stroke font opaque addresses (use constants instead in source code). */
-extern void *glutStrokeRoman;
-extern void *glutStrokeMonoRoman;
-
-/* Stroke font constants (use these in GLUT program). */
-#define GLUT_STROKE_ROMAN		(&glutStrokeRoman)
-#define GLUT_STROKE_MONO_ROMAN		(&glutStrokeMonoRoman)
-
-/* Bitmap font opaque addresses (use constants instead in source code). */
-extern void *glutBitmap9By15;
-extern void *glutBitmap8By13;
-extern void *glutBitmapTimesRoman10;
-extern void *glutBitmapTimesRoman24;
-extern void *glutBitmapHelvetica10;
-extern void *glutBitmapHelvetica12;
-extern void *glutBitmapHelvetica18;
-
-/* Bitmap font constants (use these in GLUT program). */
-#define GLUT_BITMAP_9_BY_15		(&glutBitmap9By15)
-#define GLUT_BITMAP_8_BY_13		(&glutBitmap8By13)
-#define GLUT_BITMAP_TIMES_ROMAN_10	(&glutBitmapTimesRoman10)
-#define GLUT_BITMAP_TIMES_ROMAN_24	(&glutBitmapTimesRoman24)
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_BITMAP_HELVETICA_10	(&glutBitmapHelvetica10)
-#define GLUT_BITMAP_HELVETICA_12	(&glutBitmapHelvetica12)
-#define GLUT_BITMAP_HELVETICA_18	(&glutBitmapHelvetica18)
-#endif
-#endif
-
-/* glutGet parameters. */
-#define GLUT_WINDOW_X			100
-#define GLUT_WINDOW_Y			101
-#define GLUT_WINDOW_WIDTH		102
-#define GLUT_WINDOW_HEIGHT		103
-#define GLUT_WINDOW_BUFFER_SIZE		104
-#define GLUT_WINDOW_STENCIL_SIZE	105
-#define GLUT_WINDOW_DEPTH_SIZE		106
-#define GLUT_WINDOW_RED_SIZE		107
-#define GLUT_WINDOW_GREEN_SIZE		108
-#define GLUT_WINDOW_BLUE_SIZE		109
-#define GLUT_WINDOW_ALPHA_SIZE		110
-#define GLUT_WINDOW_ACCUM_RED_SIZE	111
-#define GLUT_WINDOW_ACCUM_GREEN_SIZE	112
-#define GLUT_WINDOW_ACCUM_BLUE_SIZE	113
-#define GLUT_WINDOW_ACCUM_ALPHA_SIZE	114
-#define GLUT_WINDOW_DOUBLEBUFFER	115
-#define GLUT_WINDOW_RGBA		116
-#define GLUT_WINDOW_PARENT		117
-#define GLUT_WINDOW_NUM_CHILDREN	118
-#define GLUT_WINDOW_COLORMAP_SIZE	119
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_WINDOW_NUM_SAMPLES		120
-#define GLUT_WINDOW_STEREO		121
-#endif
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_WINDOW_CURSOR		122
-#endif
-#define GLUT_SCREEN_WIDTH		200
-#define GLUT_SCREEN_HEIGHT		201
-#define GLUT_SCREEN_WIDTH_MM		202
-#define GLUT_SCREEN_HEIGHT_MM		203
-#define GLUT_MENU_NUM_ITEMS		300
-#define GLUT_DISPLAY_MODE_POSSIBLE	400
-#define GLUT_INIT_WINDOW_X		500
-#define GLUT_INIT_WINDOW_Y		501
-#define GLUT_INIT_WINDOW_WIDTH		502
-#define GLUT_INIT_WINDOW_HEIGHT		503
-#define GLUT_INIT_DISPLAY_MODE		504
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_ELAPSED_TIME		700
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-#define GLUT_WINDOW_FORMAT_ID		123
-#endif
-
-#if (GLUT_API_VERSION >= 2)
-/* glutDeviceGet parameters. */
-#define GLUT_HAS_KEYBOARD		600
-#define GLUT_HAS_MOUSE			601
-#define GLUT_HAS_SPACEBALL		602
-#define GLUT_HAS_DIAL_AND_BUTTON_BOX	603
-#define GLUT_HAS_TABLET			604
-#define GLUT_NUM_MOUSE_BUTTONS		605
-#define GLUT_NUM_SPACEBALL_BUTTONS	606
-#define GLUT_NUM_BUTTON_BOX_BUTTONS	607
-#define GLUT_NUM_DIALS			608
-#define GLUT_NUM_TABLET_BUTTONS		609
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-#define GLUT_DEVICE_IGNORE_KEY_REPEAT   610
-#define GLUT_DEVICE_KEY_REPEAT          611
-#define GLUT_HAS_JOYSTICK		612
-#define GLUT_OWNS_JOYSTICK		613
-#define GLUT_JOYSTICK_BUTTONS		614
-#define GLUT_JOYSTICK_AXES		615
-#define GLUT_JOYSTICK_POLL_RATE		616
-#endif
-
-#if (GLUT_API_VERSION >= 3)
-/* glutLayerGet parameters. */
-#define GLUT_OVERLAY_POSSIBLE           800
-#define GLUT_LAYER_IN_USE		801
-#define GLUT_HAS_OVERLAY		802
-#define GLUT_TRANSPARENT_INDEX		803
-#define GLUT_NORMAL_DAMAGED		804
-#define GLUT_OVERLAY_DAMAGED		805
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-/* glutVideoResizeGet parameters. */
-#define GLUT_VIDEO_RESIZE_POSSIBLE	900
-#define GLUT_VIDEO_RESIZE_IN_USE	901
-#define GLUT_VIDEO_RESIZE_X_DELTA	902
-#define GLUT_VIDEO_RESIZE_Y_DELTA	903
-#define GLUT_VIDEO_RESIZE_WIDTH_DELTA	904
-#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA	905
-#define GLUT_VIDEO_RESIZE_X		906
-#define GLUT_VIDEO_RESIZE_Y		907
-#define GLUT_VIDEO_RESIZE_WIDTH		908
-#define GLUT_VIDEO_RESIZE_HEIGHT	909
-#endif
-
-/* glutUseLayer parameters. */
-#define GLUT_NORMAL			0
-#define GLUT_OVERLAY			1
-
-/* glutGetModifiers return mask. */
-#define GLUT_ACTIVE_SHIFT               1
-#define GLUT_ACTIVE_CTRL                2
-#define GLUT_ACTIVE_ALT                 4
-
-/* glutSetCursor parameters. */
-/* Basic arrows. */
-#define GLUT_CURSOR_RIGHT_ARROW		0
-#define GLUT_CURSOR_LEFT_ARROW		1
-/* Symbolic cursor shapes. */
-#define GLUT_CURSOR_INFO		2
-#define GLUT_CURSOR_DESTROY		3
-#define GLUT_CURSOR_HELP		4
-#define GLUT_CURSOR_CYCLE		5
-#define GLUT_CURSOR_SPRAY		6
-#define GLUT_CURSOR_WAIT		7
-#define GLUT_CURSOR_TEXT		8
-#define GLUT_CURSOR_CROSSHAIR		9
-/* Directional cursors. */
-#define GLUT_CURSOR_UP_DOWN		10
-#define GLUT_CURSOR_LEFT_RIGHT		11
-/* Sizing cursors. */
-#define GLUT_CURSOR_TOP_SIDE		12
-#define GLUT_CURSOR_BOTTOM_SIDE		13
-#define GLUT_CURSOR_LEFT_SIDE		14
-#define GLUT_CURSOR_RIGHT_SIDE		15
-#define GLUT_CURSOR_TOP_LEFT_CORNER	16
-#define GLUT_CURSOR_TOP_RIGHT_CORNER	17
-#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER	18
-#define GLUT_CURSOR_BOTTOM_LEFT_CORNER	19
-/* Inherit from parent window. */
-#define GLUT_CURSOR_INHERIT		100
-/* Blank cursor. */
-#define GLUT_CURSOR_NONE		101
-/* Fullscreen crosshair (if available). */
-#define GLUT_CURSOR_FULL_CROSSHAIR	102
-#endif
-
-/* GLUT initialization sub-API. */
-extern void APIENTRY glutInit(int *argcp, char **argv);
-extern void APIENTRY glutInitDisplayMode(unsigned int mode);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern void APIENTRY glutInitDisplayString(const char *string);
-#endif
-extern void APIENTRY glutInitWindowPosition(int x, int y);
-extern void APIENTRY glutInitWindowSize(int width, int height);
-extern void APIENTRY glutMainLoop(void);
-
-/* GLUT window sub-API. */
-extern int APIENTRY glutCreateWindow(const char *title);
-extern int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
-extern void APIENTRY glutDestroyWindow(int win);
-extern void APIENTRY glutPostRedisplay(void);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
-extern void APIENTRY glutPostWindowRedisplay(int win);
-#endif
-extern void APIENTRY glutSwapBuffers(void);
-extern int APIENTRY glutGetWindow(void);
-extern void APIENTRY glutSetWindow(int win);
-extern void APIENTRY glutSetWindowTitle(const char *title);
-extern void APIENTRY glutSetIconTitle(const char *title);
-extern void APIENTRY glutPositionWindow(int x, int y);
-extern void APIENTRY glutReshapeWindow(int width, int height);
-extern void APIENTRY glutPopWindow(void);
-extern void APIENTRY glutPushWindow(void);
-extern void APIENTRY glutIconifyWindow(void);
-extern void APIENTRY glutShowWindow(void);
-extern void APIENTRY glutHideWindow(void);
-#if (GLUT_API_VERSION >= 3)
-extern void APIENTRY glutFullScreen(void);
-extern void APIENTRY glutSetCursor(int cursor);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern void APIENTRY glutWarpPointer(int x, int y);
-#if (GLUT_MACOSX_IMPLEMENTATION >= 1)
-/* surface texturing API Mac OS X specific
-*  Note:
-*	glutSurfaceTexture has been deprecated, use GL_EXT_framebuffer_object
-*/
-#ifdef MAC_OS_X_VERSION_10_5
-extern void APIENTRY glutSurfaceTexture (GLenum target, GLenum internalformat, int surfacewin); AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
-#else
-extern void APIENTRY glutSurfaceTexture (GLenum target, GLenum internalformat, int surfacewin);
-#endif
-#endif
-#if (GLUT_MACOSX_IMPLEMENTATION >= 2)
-/* Mac OS X specific API */
-extern void APIENTRY glutWMCloseFunc(void (*func)(void));
-extern void APIENTRY glutCheckLoop(void);
-#endif
-#endif
-
-/* GLUT overlay sub-API. */
-extern void APIENTRY glutEstablishOverlay(void);
-extern void APIENTRY glutRemoveOverlay(void);
-extern void APIENTRY glutUseLayer(GLenum layer);
-extern void APIENTRY glutPostOverlayRedisplay(void);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
-extern void APIENTRY glutPostWindowOverlayRedisplay(int win);
-#endif
-extern void APIENTRY glutShowOverlay(void);
-extern void APIENTRY glutHideOverlay(void);
-#endif
-
-/* GLUT menu sub-API. */
-extern int APIENTRY glutCreateMenu(void (*)(int));
-extern void APIENTRY glutDestroyMenu(int menu);
-extern int APIENTRY glutGetMenu(void);
-extern void APIENTRY glutSetMenu(int menu);
-extern void APIENTRY glutAddMenuEntry(const char *label, int value);
-extern void APIENTRY glutAddSubMenu(const char *label, int submenu);
-extern void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
-extern void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
-extern void APIENTRY glutRemoveMenuItem(int item);
-extern void APIENTRY glutAttachMenu(int button);
-extern void APIENTRY glutDetachMenu(int button);
-
-/* GLUT window callback sub-API. */
-extern void APIENTRY glutDisplayFunc(void (*func)(void));
-extern void APIENTRY glutReshapeFunc(void (*func)(int width, int height));
-extern void APIENTRY glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
-extern void APIENTRY glutMouseFunc(void (*func)(int button, int state, int x, int y));
-extern void APIENTRY glutMotionFunc(void (*func)(int x, int y));
-extern void APIENTRY glutPassiveMotionFunc(void (*func)(int x, int y));
-extern void APIENTRY glutEntryFunc(void (*func)(int state));
-extern void APIENTRY glutVisibilityFunc(void (*func)(int state));
-extern void APIENTRY glutIdleFunc(void (*func)(void));
-extern void APIENTRY glutTimerFunc(unsigned int millis, void (*func)(int value), int value);
-extern void APIENTRY glutMenuStateFunc(void (*func)(int state));
-#if (GLUT_API_VERSION >= 2)
-extern void APIENTRY glutSpecialFunc(void (*func)(int key, int x, int y));
-extern void APIENTRY glutSpaceballMotionFunc(void (*func)(int x, int y, int z));
-extern void APIENTRY glutSpaceballRotateFunc(void (*func)(int x, int y, int z));
-extern void APIENTRY glutSpaceballButtonFunc(void (*func)(int button, int state));
-extern void APIENTRY glutButtonBoxFunc(void (*func)(int button, int state));
-extern void APIENTRY glutDialsFunc(void (*func)(int dial, int value));
-extern void APIENTRY glutTabletMotionFunc(void (*func)(int x, int y));
-extern void APIENTRY glutTabletButtonFunc(void (*func)(int button, int state, int x, int y));
-#if (GLUT_API_VERSION >= 3)
-extern void APIENTRY glutMenuStatusFunc(void (*func)(int status, int x, int y));
-extern void APIENTRY glutOverlayDisplayFunc(void (*func)(void));
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern void APIENTRY glutWindowStatusFunc(void (*func)(int state));
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-extern void APIENTRY glutKeyboardUpFunc(void (*func)(unsigned char key, int x, int y));
-extern void APIENTRY glutSpecialUpFunc(void (*func)(int key, int x, int y));
-extern void APIENTRY glutJoystickFunc(void (*func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
-#endif
-#endif
-#endif
-
-/* GLUT color index sub-API. */
-extern void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
-extern GLfloat APIENTRY glutGetColor(int ndx, int component);
-extern void APIENTRY glutCopyColormap(int win);
-
-/* GLUT state retrieval sub-API. */
-extern int APIENTRY glutGet(GLenum type);
-extern int APIENTRY glutDeviceGet(GLenum type);
-#if (GLUT_API_VERSION >= 2)
-/* GLUT extension support sub-API */
-extern int APIENTRY glutExtensionSupported(const char *name);
-#endif
-#if (GLUT_API_VERSION >= 3)
-extern int APIENTRY glutGetModifiers(void);
-extern int APIENTRY glutLayerGet(GLenum type);
-#endif
-#if (GLUT_API_VERSION >= 5)
-extern void * APIENTRY glutGetProcAddress(const char *procName);
-#endif
-
-/* GLUT font sub-API */
-extern void APIENTRY glutBitmapCharacter(void *font, int character);
-extern int APIENTRY glutBitmapWidth(void *font, int character);
-extern void APIENTRY glutStrokeCharacter(void *font, int character);
-extern int APIENTRY glutStrokeWidth(void *font, int character);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-extern int APIENTRY glutBitmapLength(void *font, const unsigned char *string);
-extern int APIENTRY glutStrokeLength(void *font, const unsigned char *string);
-#endif
-
-/* GLUT pre-built models sub-API */
-extern void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
-extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
-extern void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
-extern void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
-extern void APIENTRY glutWireCube(GLdouble size);
-extern void APIENTRY glutSolidCube(GLdouble size);
-extern void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
-extern void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
-extern void APIENTRY glutWireDodecahedron(void);
-extern void APIENTRY glutSolidDodecahedron(void);
-extern void APIENTRY glutWireTeapot(GLdouble size);
-extern void APIENTRY glutSolidTeapot(GLdouble size);
-extern void APIENTRY glutWireOctahedron(void);
-extern void APIENTRY glutSolidOctahedron(void);
-extern void APIENTRY glutWireTetrahedron(void);
-extern void APIENTRY glutSolidTetrahedron(void);
-extern void APIENTRY glutWireIcosahedron(void);
-extern void APIENTRY glutSolidIcosahedron(void);
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-/* GLUT video resize sub-API. */
-extern int APIENTRY glutVideoResizeGet(GLenum param);
-extern void APIENTRY glutSetupVideoResizing(void);
-extern void APIENTRY glutStopVideoResizing(void);
-extern void APIENTRY glutVideoResize(int x, int y, int width, int height);
-extern void APIENTRY glutVideoPan(int x, int y, int width, int height);
-
-/* GLUT debugging sub-API. */
-extern void APIENTRY glutReportErrors(void);
-#endif
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-/* GLUT device control sub-API. */
-/* glutSetKeyRepeat modes. */
-#define GLUT_KEY_REPEAT_OFF		0
-#define GLUT_KEY_REPEAT_ON		1
-#define GLUT_KEY_REPEAT_DEFAULT		2
-
-/* Joystick button masks. */
-#define GLUT_JOYSTICK_BUTTON_A		1
-#define GLUT_JOYSTICK_BUTTON_B		2
-#define GLUT_JOYSTICK_BUTTON_C		4
-#define GLUT_JOYSTICK_BUTTON_D		8
-
-extern void APIENTRY glutIgnoreKeyRepeat(int ignore);
-extern void APIENTRY glutSetKeyRepeat(int repeatMode);
-extern void APIENTRY glutForceJoystickFunc(void);
-
-/* GLUT game mode sub-API. */
-/* glutGameModeGet. */
-#define GLUT_GAME_MODE_ACTIVE           0
-#define GLUT_GAME_MODE_POSSIBLE         1
-#define GLUT_GAME_MODE_WIDTH            2
-#define GLUT_GAME_MODE_HEIGHT           3
-#define GLUT_GAME_MODE_PIXEL_DEPTH      4
-#define GLUT_GAME_MODE_REFRESH_RATE     5
-#define GLUT_GAME_MODE_DISPLAY_CHANGED  6
-
-extern void APIENTRY glutGameModeString(const char *string);
-extern int APIENTRY glutEnterGameMode(void);
-extern void APIENTRY glutLeaveGameMode(void);
-extern int APIENTRY glutGameModeGet(GLenum mode);
-#endif
-
-#ifdef __cplusplus
-}
-
-#endif
-
-#ifdef GLUT_APIENTRY_DEFINED
-# undef GLUT_APIENTRY_DEFINED
-# undef APIENTRY
-#endif
-
-#ifdef GLUT_WINGDIAPI_DEFINED
-# undef GLUT_WINGDIAPI_DEFINED
-# undef WINGDIAPI
-#endif
-
-#endif                  /* __glut_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glutbitmap.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#ifndef __glutbitmap_h__
-#define __glutbitmap_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#include "glut.h"
-
-typedef struct {
-  const GLsizei width;
-  const GLsizei height;
-  const GLfloat xorig;
-  const GLfloat yorig;
-  const GLfloat advance;
-  const GLubyte *bitmap;
-} BitmapCharRec, *BitmapCharPtr;
-
-typedef struct {
-  const char *name;
-  const int num_chars;
-  const int first;
-  const BitmapCharRec * const *ch;
-} BitmapFontRec, *BitmapFontPtr;
-
-typedef void *GLUTbitmapFont;
-
-#endif /* __glutbitmap_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glutf90.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-#ifndef __glutf90_h__
-#define __glutf90_h__
-
-/* Copyright (c) Mark J. Kilgard & Willam F. Mitchell, 1998. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-/* This header provides the binding interface for William Mitchell's
-   f90gl Fortran 90 GLUT binding.  Other GLUT language bindings
-   can and should use this interace. */
-
-/* I appreciate the guidance from William Mitchell
-   (mitchell@cam.nist.gov) in developing this friend interface
-   for use by the f90gl package.  See ../../README.fortran */
-
-#include <GLUT/glut.h>
-
-#ifndef GLUTCALLBACK
-	#define GLUTCALLBACK
-#endif
-#ifndef APIENTRY
-	#define APIENTRY
-#endif
-
-/* Which callback enumerants for the __glutSetFCB/__glutGetFCB routines. */
-/* NOTE These values are part of a binary interface for the f90gl Fortran
-   90 binding and so must NOT changes (additions are allowed). */
-
-/* GLUTwindow callbacks. */
-#define GLUT_FCB_DISPLAY         0    /* GLUTdisplayFCB */
-#define GLUT_FCB_RESHAPE         1    /* GLUTreshapeFCB */
-#define GLUT_FCB_MOUSE           2    /* GLUTmouseFCB */
-#define GLUT_FCB_MOTION          3    /* GLUTmotionFCB */
-#define GLUT_FCB_PASSIVE         4    /* GLUTpassiveFCB */
-#define GLUT_FCB_ENTRY           5    /* GLUTentryFCB */
-#define GLUT_FCB_KEYBOARD        6    /* GLUTkeyboardFCB */
-#define GLUT_FCB_KEYBOARD_UP     7    /* GLUTkeyboardFCB */
-#define GLUT_FCB_WINDOW_STATUS   8    /* GLUTwindowStatusFCB */
-#define GLUT_FCB_VISIBILITY      9    /* GLUTvisibilityFCB */
-#define GLUT_FCB_SPECIAL         10   /* GLUTspecialFCB */
-#define GLUT_FCB_SPECIAL_UP      11   /* GLUTspecialFCB */
-#define GLUT_FCB_BUTTON_BOX      12   /* GLUTbuttonBoxFCB */
-#define GLUT_FCB_DIALS           13   /* GLUTdialsFCB */
-#define GLUT_FCB_SPACE_MOTION    14   /* GLUTspaceMotionFCB */
-#define GLUT_FCB_SPACE_ROTATE    15   /* GLUTspaceRotateFCB */
-#define GLUT_FCB_SPACE_BUTTON    16   /* GLUTspaceButtonFCB */
-#define GLUT_FCB_TABLET_MOTION   17   /* GLUTtabletMotionFCB */
-#define GLUT_FCB_TABLET_BUTTON   18   /* GLUTtabletButtonFCB */
-#define GLUT_FCB_JOYSTICK        19   /* GLUTjoystickFCB */
-#define GLUT_FCB_WMCLOSE         20   /* GLUTwmcloseFCB */
-/* Non-GLUTwindow callbacks. */
-#define GLUT_FCB_OVERLAY_DISPLAY 100  /* GLUTdisplayFCB */
-#define GLUT_FCB_SELECT          101  /* GLUTselectFCB */
-#define GLUT_FCB_TIMER           102  /* GLUTtimerFCB */
-
-/* GLUT Fortran callback function types. */
-typedef void (GLUTCALLBACK *GLUTdisplayFCB) (void);
-typedef void (GLUTCALLBACK *GLUTwmcloseFCB) (void);
-typedef void (GLUTCALLBACK *GLUTreshapeFCB) (int *, int *);
-/* NOTE the pressed key is int, not unsigned char for Fortran! */
-typedef void (GLUTCALLBACK *GLUTkeyboardFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTmouseFCB) (int *, int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTmotionFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTpassiveFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTentryFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTwindowStatusFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTvisibilityFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTspecialFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTbuttonBoxFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTdialsFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceMotionFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceRotateFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceButtonFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTtabletMotionFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTtabletButtonFCB) (int *, int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTjoystickFCB) (unsigned int *buttonMask, int *x, int *y, int *z);
-
-typedef void (GLUTCALLBACK *GLUTselectFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTtimerFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTmenuStateFCB) (int *);  /* DEPRICATED. */
-typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTidleFCB) (void);
-
-/* Functions that set and return Fortran callback functions. */
-extern void* APIENTRY __glutGetFCB(int which);
-extern void APIENTRY __glutSetFCB(int which, void *func);
-
-#endif  /* __glutf90_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/glutstroke.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#ifndef __glutstroke_h__
-#define __glutstroke_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#if defined(_WIN32)
-#pragma warning (disable:4244)  /* disable bogus conversion warnings */
-#pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-#endif
-
-typedef struct {
-  float x;
-  float y;
-} CoordRec, *CoordPtr;
-
-typedef struct {
-  int num_coords;
-  const CoordRec *coord;
-} StrokeRec, *StrokePtr;
-
-typedef struct {
-  int num_strokes;
-  const StrokeRec *stroke;
-  float center;
-  float right;
-} StrokeCharRec, *StrokeCharPtr;
-
-typedef struct {
-  const char *name;
-  int num_chars;
-  const StrokeCharRec *ch;
-  float top;
-  float bottom;
-} StrokeFontRec, *StrokeFontPtr;
-
-typedef void *GLUTstrokeFont;
-
-#endif /* __glutstroke_h__ */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/gutil.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-
-/*
- * gutil.h
- *
- * FUNCTION:
- * Provide utilities that allow rotation to occur 
- * around any axis.
- * 
- * HISTORY:
- * created by Linas Vepstas  1990
- * added single & double precision, June 1991, Linas Vepstas
- */
-
-#ifndef __GUTIL_H__
-#define __GUTIL_H__
-
-#ifdef __GUTIL_DOUBLE
-#define gutDouble double
-#else
-#define gutDouble float  
-#endif
-
-
-#ifdef _NO_PROTO		/* NO ANSI C PROTOTYPING */
-
-/* Rotation Utilities */
-extern void rot_axis_f ();
-extern void rot_about_axis_f ();
-extern void rot_omega_f ();
-extern void urot_axis_f ();
-extern void urot_about_axis_f ();
-extern void urot_omega_f ();
-
-/* double-precision versions */
-extern void rot_axis_d ();
-extern void rot_about_axis_d ();
-extern void rot_omega_d ();
-extern void urot_axis_d ();
-extern void urot_about_axis_d ();
-extern void urot_omega_d ();
-
-/* viewpoint functions */
-extern void uview_direction_d ();
-extern void uview_direction_f ();
-extern void uviewpoint_d ();
-extern void uviewpoint_f ();
-
-#else /* _NO_PROTO */		/* ANSI C PROTOTYPING */
-
-/* Rotation Utilities */
-extern void rot_axis_f (float omega, float axis[3]);
-extern void rot_about_axis_f (float angle, float axis[3]);
-extern void rot_omega_f (float axis[3]);
-extern void urot_axis_f (float m[4][4], float omega, float axis[3]);
-extern void urot_about_axis_f (float m[4][4], float angle, float axis[3]);
-extern void urot_omega_f (float m[4][4], float axis[3]);
-
-/* double-precision versions */
-extern void rot_axis_d (double omega, double axis[3]);
-extern void rot_about_axis_d (double angle, double axis[3]);
-extern void rot_omega_d (double axis[3]);
-extern void urot_axis_d (double m[4][4], double omega, double axis[3]);
-extern void urot_about_axis_d (double m[4][4], double angle, double axis[3]);
-extern void urot_omega_d (double m[4][4], double axis[3]);
-
-/* viewpoint functions */
-extern void uview_direction_d (double m[4][4],		/* returned */
-                        double v21[3],		/* input */
-                        double up[3]);		/* input */
-
-extern void uview_direction_f (float m[4][4],		/* returned */
-                        float v21[3],		/* input */
-                        float up[3]);		/* input */
-
-extern void uviewpoint_d (double m[4][4],		/* returned */
-                   double v1[3],		/* input */
-                   double v2[3],		/* input */
-                   double up[3]);		/* input */
-
-extern void uviewpoint_f (float m[4][4],		/* returned */
-                   float v1[3],		/* input */
-                   float v2[3],		/* input */
-                   float up[3]);		/* input */
-
-#endif /* _NO_PROTO */
-
-#endif /* _GUTIL_H__ */
-
-/* ------------------- end of file ---------------------- */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/intersect.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +0,0 @@
-/*
- * FUNCTION:
- * This file contains a number of utilities useful to 3D graphics in
- * general, and to the generation of tubing and extrusions in particular
- * 
- * HISTORY:
- * Written by Linas Vepstas, August 1991
- * Updated to correctly handle degenerate cases, Linas,  February 1993 
- */
-
-#include <math.h>
-#include "port.h"
-#include "vvector.h"
-
-#define BACKWARDS_INTERSECT (2)
-
-/* ========================================================== */
-/*
- * the Degenerate_Tolerance token represents the greatest amount by
- * which different scales in a graphics environment can differ before
- * they should be considered "degenerate".   That is, when one vector is
- * a million times longer than another, changces are that the second will
- * be less than a pixel int, and therefore was probably meant to be
- * degenerate (by the CAD package, etc.)  But what should this tolerance
- * be?  At least 1 in onethousand (since screen sizes are 1K pixels), but
- * les than 1 in 4 million (since this is the limit of single-precision
- * floating point accuracy).  Of course, if double precision were used,
- * then the tolerance could be increased.
- * 
- * Potentially, this naive assumption could cause problems if the CAD
- * package attempts to zoom in on small details, and turns out, certain
- * points should not hvae been degenerate.  The problem presented here
- * is that the tolerance could run out before single-precision ran
- * out, and so the CAD packages would perceive this as a "bug".
- * One alternative is to fiddle around & try to tighten the tolerance.
- * However, the right alternative is to code the graphics pipeline in
- * double-precision (and tighten the tolerance).
- *
- * By the way, note that Degernate Tolerance is a "dimensionless"
- * quantitiy -- it has no units -- it does not measure feet, inches,
- * millimeters or pixels.  It is used only in the computations of ratios
- * and relative lengths.
- */
-
-/* 
- * Right now, the tolerance is set to 2 parts in a million, which
- * corresponds to a 19-bit distinction of mantissas. Note that
- * single-precsion numbers have 24 bit mantissas.
- */
-
-#define DEGENERATE_TOLERANCE   (0.000002)
-
-/* ========================================================== */
-/* 
- * The macro and subroutine INTERSECT are designed to compute the
- * intersection of a line (defined by the points v1 and v2) and a plane
- * (defined as plane which is normal to the vector n, and contains the
- * point p).  Both return the point sect, which is the point of
- * interesection.
- *
- * This MACRO attemps to be fairly robust by checking for a divide by
- * zero.
- */
-
-/* ========================================================== */
-/*
- * HACK ALERT
- * The intersection parameter t has the nice property that if t>1,
- * then the intersection is "in front of" p1, and if t<0, then the
- * intersection is "behind" p2. Unfortunately, as the intersecting plane
- * and the line become parallel, t wraps through infinity -- i.e. t can
- * become so large that t becomes "greater than infinity" and comes back 
- * as a negative number (i.e. winding number hopped by one unit).  We 
- * have no way of detecting this situation without adding gazzillions 
- * of lines of code of topological algebra to detect the winding number;
- * and this would be incredibly difficult, and ruin performance.
- * 
- * Thus, we've installed a cheap hack for use by the "cut style" drawing
- * routines. If t proves to be a large negative number (more negative
- * than -5), then we assume that t was positive and wound through
- * infinity.  This makes most cuts look good, without introducing bogus
- * cuts at infinity.
- */
-/* ========================================================== */
-
-#define INTERSECT(sect,p,n,v1,v2)			\
-{							\
-   gleDouble deno, numer, t, omt;			\
-							\
-   deno = (v1[0] - v2[0]) * n[0];			\
-   deno += (v1[1] - v2[1]) * n[1];			\
-   deno += (v1[2] - v2[2]) * n[2];			\
-   							\
-   if (deno == 0.0) {					\
-      VEC_COPY (n, v1);					\
-      /* printf ("Intersect: Warning: line is coplanar with plane \n"); */ \
-   } else {						\
-							\
-      numer = (p[0] - v2[0]) * n[0];			\
-      numer += (p[1] - v2[1]) * n[1];			\
-      numer += (p[2] - v2[2]) * n[2];			\
-							\
-      t = numer / deno;					\
-      omt = 1.0 - t;					\
-							\
-      sect[0] = t * v1[0] + omt * v2[0];		\
-      sect[1] = t * v1[1] + omt * v2[1];		\
-      sect[2] = t * v1[2] + omt * v2[2];		\
-   }							\
-}
-
-/* ========================================================== */
-/* 
- * The macro and subroutine BISECTING_PLANE compute a normal vector that
- * describes the bisecting plane between three points (v1, v2 and v3).  
- * This bisecting plane has the following properties:
- * 1) it contains the point v2
- * 2) the angle it makes with v21 == v2 - v1 is equal to the angle it 
- *    makes with v32 == v3 - v2 
- * 3) it is perpendicular to the plane defined by v1, v2, v3.
- *
- * Having input v1, v2, and v3, it returns a unit vector n.
- *
- * In some cases, the user may specify degenerate points, and still
- * expect "reasonable" or "obvious" behaviour.  The "expected"
- * behaviour for these degenerate cases is:
- *
- * 1) if v1 == v2 == v3, then return n=0
- * 2) if v1 == v2, then return v32 (normalized).
- * 3) if v2 == v3, then return v21 (normalized).
- * 4) if v1, v2 and v3 co-linear, then return v21 (normalized).
- *
- * Mathematically, these special cases "make sense" -- we just have to
- * code around potential divide-by-zero's in the code below.
- */
-
-/* ========================================================== */
-
-#define BISECTING_PLANE(valid,n,v1,v2,v3)			\
-{								\
-   double v21[3], v32[3];					\
-   double len21, len32;						\
-   double vdot;							\
-								\
-   VEC_DIFF (v21, v2, v1);					\
-   VEC_DIFF (v32, v3, v2);					\
-								\
-   VEC_LENGTH (len21, v21);					\
-   VEC_LENGTH (len32, v32);					\
-								\
-   if (len21 <= DEGENERATE_TOLERANCE * len32) {			\
-								\
-      if (len32 == 0.0) {					\
-         /* all three points lie ontop of one-another */	\
-         VEC_ZERO (n);						\
-         valid = FALSE;						\
-      } else {							\
-         /* return a normalized copy of v32 as bisector */	\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (n, len32, v32);				\
-         valid = TRUE;						\
-      }								\
-								\
-   } else {							\
-								\
-      valid = TRUE;						\
-								\
-      if (len32 <= DEGENERATE_TOLERANCE * len21) {		\
-         /* return a normalized copy of v21 as bisector */	\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (n, len21, v21);				\
-								\
-      } else {							\
-								\
-         /* normalize v21 to be of unit length */		\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (v21, len21, v21);				\
-								\
-         /* normalize v32 to be of unit length */		\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (v32, len32, v32);				\
-								\
-         VEC_DOT_PRODUCT (vdot, v32, v21);			\
-								\
-         /* if vdot == 1 or -1, then points are colinear */	\
-         if ((vdot >= (1.0-DEGENERATE_TOLERANCE)) || 		\
-             (vdot <= (-1.0+DEGENERATE_TOLERANCE))) {		\
-            VEC_COPY (n, v21);					\
-         } else {						\
-   								\
-            /* go do the full computation */ 			\
-            n[0] = vdot * (v32[0] + v21[0]) - v32[0] - v21[0];	\
-            n[1] = vdot * (v32[1] + v21[1]) - v32[1] - v21[1];	\
-            n[2] = vdot * (v32[2] + v21[2]) - v32[2] - v21[2];	\
-								\
-            /* if above if-test's passed, 			\
-             * n should NEVER be of zero length */		\
-            VEC_NORMALIZE (n);					\
-         } 							\
-      } 							\
-   } 								\
-}
-
-/* ========================================================== */
-/*
- * The block of code below is ifdef'd out, and is here for reference
- * purposes only.  It performs the "mathematically right thing" for
- * computing a bisecting plane, but is, unfortunately, subject ot noise
- * in the presence of near degenerate points.  Since computer graphics,
- * due to sloppy coding, laziness, or correctness, is filled with
- * degenerate points, we can't really use this version.  The code above
- * is far more appropriate for graphics.
- */
-
-#ifdef MATHEMATICALLY_EXACT_GRAPHICALLY_A_KILLER
-#define BISECTING_PLANE(n,v1,v2,v3)				\
-{								\
-   double v21[3], v32[3];					\
-   double len21, len32;						\
-   double vdot;							\
-								\
-   VEC_DIFF (v21, v2, v1);					\
-   VEC_DIFF (v32, v3, v2);					\
-								\
-   VEC_LENGTH (len21, v21);					\
-   VEC_LENGTH (len32, v32);					\
-								\
-   if (len21 == 0.0) {						\
-								\
-      if (len32 == 0.0) {					\
-         /* all three points lie ontop of one-another */	\
-         VEC_ZERO (n);						\
-         valid = FALSE;						\
-      } else {							\
-         /* return a normalized copy of v32 as bisector */	\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (n, len32, v32);				\
-      }								\
-								\
-   } else {							\
-								\
-      /* normalize v21 to be of unit length */			\
-      len21 = 1.0 / len21;					\
-      VEC_SCALE (v21, len21, v21);				\
-								\
-      if (len32 == 0.0) {					\
-         /* return a normalized copy of v21 as bisector */	\
-         VEC_COPY (n, v21);					\
-      } else {							\
-								\
-         /* normalize v32 to be of unit length */		\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (v32, len32, v32);				\
-								\
-         VEC_DOT_PRODUCT (vdot, v32, v21);			\
-								\
-         /* if vdot == 1 or -1, then points are colinear */	\
-         if ((vdot == 1.0) || (vdot == -1.0)) {			\
-            VEC_COPY (n, v21);					\
-         } else {						\
-   								\
-            /* go do the full computation */ 			\
-            n[0] = vdot * (v32[0] + v21[0]) - v32[0] - v21[0];	\
-            n[1] = vdot * (v32[1] + v21[1]) - v32[1] - v21[1];	\
-            n[2] = vdot * (v32[2] + v21[2]) - v32[2] - v21[2];	\
-								\
-            /* if above if-test's passed, 			\
-             * n should NEVER be of zero length */		\
-            VEC_NORMALIZE (n);					\
-         } 							\
-      } 							\
-   } 								\
-}
-#endif
-
-/* ========================================================== */
-/*
- * This macro computes the plane perpendicular to the the plane
- * defined by three points, and whose normal vector is givven as the
- * difference between the two vectors ...
- * 
- * (See way below for the "math" model if you want to understand this.
- * The comments about relative errors above apply here.)
- */
-
-#define CUTTING_PLANE(valid,n,v1,v2,v3)				\
-{								\
-   double v21[3], v32[3];					\
-   double len21, len32;						\
-   double lendiff;						\
-								\
-   VEC_DIFF (v21, v2, v1);					\
-   VEC_DIFF (v32, v3, v2);					\
-								\
-   VEC_LENGTH (len21, v21);					\
-   VEC_LENGTH (len32, v32);					\
-								\
-   if (len21 <= DEGENERATE_TOLERANCE * len32) {			\
-								\
-      if (len32 == 0.0) {					\
-         /* all three points lie ontop of one-another */	\
-         VEC_ZERO (n);						\
-         valid = FALSE;						\
-      } else {							\
-         /* return a normalized copy of v32 as cut-vector */	\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (n, len32, v32);				\
-         valid = TRUE;						\
-      }								\
-								\
-   } else {							\
-								\
-      valid = TRUE;						\
-								\
-      if (len32 <= DEGENERATE_TOLERANCE * len21) {		\
-         /* return a normalized copy of v21 as cut vector */	\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (n, len21, v21);				\
-      } else {							\
-								\
-         /* normalize v21 to be of unit length */		\
-         len21 = 1.0 / len21;					\
-         VEC_SCALE (v21, len21, v21);				\
-								\
-         /* normalize v32 to be of unit length */		\
-         len32 = 1.0 / len32;					\
-         VEC_SCALE (v32, len32, v32);				\
-								\
-         VEC_DIFF (n, v21, v32);				\
-         VEC_LENGTH (lendiff, n);				\
-								\
-         /* if the perp vector is very small, then the two 	\
-          * vectors are darn near collinear, and the cut 	\
-          * vector is probably poorly defined. */		\
-         if (lendiff < DEGENERATE_TOLERANCE) {			\
-            VEC_ZERO (n);					\
-            valid = FALSE;					\
-         } else {						\
-            lendiff = 1.0 / lendiff;				\
-            VEC_SCALE (n, lendiff, n);				\
-         } 							\
-      } 							\
-   } 								\
-}
-
-/* ========================================================== */
-
-#ifdef MATHEMATICALLY_EXACT_GRAPHICALLY_A_KILLER
-#define CUTTING_PLANE(n,v1,v2,v3)		\
-{						\
-   double v21[3], v32[3];			\
-						\
-   VEC_DIFF (v21, v2, v1);			\
-   VEC_DIFF (v32, v3, v2);			\
-						\
-   VEC_NORMALIZE (v21);				\
-   VEC_NORMALIZE (v32);				\
-						\
-   VEC_DIFF (n, v21, v32);			\
-   VEC_NORMALIZE (n);				\
-}
-#endif
-
-
-/* ============================================================ */
-/* This macro is used in several places to cycle through a series of
- * points to find the next non-degenerate point in a series */
-
-#define FIND_NON_DEGENERATE_POINT(inext,npoints,len,diff,point_array)   \
-{                                                                       \
-   gleDouble slen;							\
-   gleDouble summa[3];							\
-   									\
-   do {                                                                 \
-      /* get distance to next point */                                  \
-      VEC_DIFF (diff, point_array[inext+1], point_array[inext]);        \
-      VEC_LENGTH (len, diff);                                           \
-      VEC_SUM (summa, point_array[inext+1], point_array[inext]);        \
-      VEC_LENGTH (slen, summa);                                         \
-      slen *= DEGENERATE_TOLERANCE;					\
-      inext ++;                                                         \
-   } while ((len <= slen) && (inext < npoints-1));                      \
-}
-
-/* ========================================================== */
-
-extern int bisecting_plane (gleDouble n[3],    /* returned */
-                      gleDouble v1[3],  /* input */
-                      gleDouble v2[3],  /* input */
-                      gleDouble v3[3]);  /* input */
-
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/port.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,298 +0,0 @@
-
-/*
- * port.h 
- *
- * FUNCTION:
- * This file contains defines for porting the tubing toolkit from GL to
- * OpenGL to some callback scheme.
- *
- * HISTORY:
- * Created by Linas Vepstas --  February 1993
- * Added auto texture coord generation hacks, Linas April 1994 
- */
-
-#ifndef __GLE_PORT_H__
-#define __GLE_PORT_H__
-
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-/* ====================================================== */
-/* Some compilers can't handle multiply-subscripted array's */
-
-#ifdef FUNKY_C
-typedef gleDouble gleVector;
-#define AVAL(arr,n,i,j)  arr(6*n+3*i+j)
-#define VVAL(arr,n,i)  arr(3*n+i)
-
-#else  /* FUNKY_C */
-typedef double gleVector[3];
-typedef double glePoint[2];
-#define AVAL(arr,n,i,j)  arr[n][i][j]
-#define VVAL(arr,n,i)  arr[n][i];
-
-#endif /* FUNKY_C */
-
-/* ====================================================== */
-/* These are used to convey info about topography to the 
- * texture mapping routines */
-
-#define FRONT 		1
-#define BACK 		2
-#define FRONT_CAP 	3
-#define BACK_CAP	4
-#define FILLET		5
-
-/* ====================================================== */
-
-#define __GLE_DOUBLE
-
-/* ====================================================== */
-
-#ifdef __GLE_DOUBLE
-#ifndef gleDouble
-    #define gleDouble 		double
-#endif
-#define urot_axis(a,b,c) 	urot_axis_d(a,b,c)
-#define uview_direction(a,b,c) 	uview_direction_d(a,b,c)
-#define uviewpoint(a,b,c,d) 	uviewpoint_d(a,b,c,d)
-#define MULTMATRIX(m)		MULTMATRIX_D(m)
-#define LOADMATRIX(m)		LOADMATRIX_D(m)
-#define V3F(x,j,id)		V3F_D(x,j,id)
-#define N3F(x)			N3F_D(x)
-#define T2F(x,y)		T2F_D(x,y)
-#else 
-#define gleDouble 		float
-#define urot_axis(a,b,c) 	urot_axis_f(a,b,c)
-#define uview_direction(a,b,c) 	uview_direction_f(a,b,c)
-#define uviewpoint(a,b,c,d) 	uviewpoint_f(a,b,c,d)
-#define MULTMATRIX(m)		MULTMATRIX_F(m)
-#define LOADMATRIX(m)		LOADMATRIX_F(m)
-#define V3F(x,j,id)		V3F_F(x,j,id)
-#define N3F(x)			N3F_F(x)
-#define T2F(x,y)		T2F_F(x,y)
-#endif 
-
-/* ====================================================== */
-
-#if (defined DEBUG_GL_32 || DEBUG_OPENGL_10)
-#undef GL_32
-#undef OPENGL_10
-
-#define BGNTMESH(i,len)	printf ("bgntmesh() \n");
-#define ENDTMESH()      printf ("endtmesh() \n");
-#define BGNPOLYGON()	printf ("bgnpolygon() \n");
-#define ENDPOLYGON()	printf ("endpolygon() \n");
-#define V3F_F(x,j,id)	printf ("v3f(x)		%f %f %f \n", x[0], x[1], x[2]);
-#define V3F_D(x,j,id)	printf ("v3d(x) 	%f %f %f \n", x[0], x[1], x[2]);
-#define	N3F_F(x)	printf ("n3f(x) 	%f %f %f \n", x[0], x[1], x[2]);
-#define	N3F_D(x)	printf ("n3d(x)		%f %f %f \n", x[0], x[1], x[2]);
-#define	C3F(x)		printf ("c3f(x) 	%f %f %f \n", x[0], x[1], x[2]);
-
-#define	POPMATRIX()	printf ("popmatrix () \n");
-#define	PUSHMATRIX()	printf ("pushmatrix() \n");
-#define	MULTMATRIX_F(x)	MULTMATRIX_D(x)
-#define	LOADMATRIX_F(x)	LOADMATRIX_D(x)
-
-
-#define LOADMATRIX_D(x) {				\
-   int i, j; 						\
-   printf ("loadmatrix (x) \n");			\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         printf ( "%f ", x[i][j]);			\
-      }							\
-      printf (" \n");					\
-   }							\
-}
-
-#define MULTMATRIX_D(x) {				\
-   int i, j; 						\
-   printf ("multmatrix (x) \n");			\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         printf ( "%f ", x[i][j]);			\
-      }							\
-      printf (" \n");					\
-   }							\
-}
-
-#define __IS_LIGHTING_ON  (1)
-
-#endif
-
-/* ====================================================== */
-
-#ifdef GL_32
-
-#include <gl/gl.h>
-
-#define BGNTMESH(i,len)	bgntmesh()
-#define ENDTMESH()	endtmesh()
-#define BGNPOLYGON()	bgnpolygon()
-#define ENDPOLYGON()	endpolygon()
-#define V3F_F(x,j,id)	v3f(x)
-#define V3F_D(x,j,id)	v3d(x)
-#define	N3F_F(x)	n3f(x)
-#define	T2F_F(x,y)
-#define	T2F_D(x,y)
-#define	C3F(x)		c3f(x)
-
-#define	POPMATRIX()	popmatrix ()
-#define	PUSHMATRIX()	pushmatrix()
-#define	MULTMATRIX_F(x)	multmatrix (x)
-#define	LOADMATRIX_F(x)	loadmatrix (x)
-
-#define	N3F_D(x) {					\
-   float nnn[3];					\
-   nnn[0] = (float) x[0]; 				\
-   nnn[1] = (float) x[1]; 				\
-   nnn[2] = (float) x[2]; 				\
-   n3f (nnn);						\
-}
-
-#define LOADMATRIX_D(x) {				\
-   int i, j; 						\
-   float mmm[4][4];					\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         mmm[i][j] = (float) x[i][j];			\
-      }							\
-   }							\
-   loadmatrix(mmm);					\
-}
-
-#define MULTMATRIX_D(x) {				\
-   int i, j; 						\
-   float mmm[4][4];					\
-   for (i=0; i<4; i++) {				\
-      for (j=0; j<4; j++) {				\
-         mmm[i][j] = (float) x[i][j];			\
-      }							\
-   }							\
-   multmatrix(mmm);					\
-}
-
-/* #define __IS_LIGHTING_ON  (MSINGLE == getmmode()) */
-#define __IS_LIGHTING_ON  (extrusion_join_style & TUBE_LIGHTING_ON)
-
-#endif /* GL_32 */
-
-/* ====================================================== */
-#ifdef OPENGL_10
-
-#if defined(_WIN32)
-#include <windows.h>
-#pragma warning (disable:4244)          /* disable bogus conversion warnings */
-#endif
-#include <OpenGL/gl.h>
-#include <OpenGL/glu.h>
-
-/*
-#define	N3F_F(x) {					\
-   float nnn[3];					\
-   nnn[0] = - (float) x[0]; 				\
-   nnn[1] = - (float) x[1]; 				\
-   nnn[2] = - (float) x[2]; 				\
-   glNormal3fv (nnn);						\
-}
-#define	N3F_D(x) {					\
-   float nnn[3];					\
-   nnn[0] = - (float) x[0]; 				\
-   nnn[1] = - (float) x[1]; 				\
-   nnn[2] = - (float) x[2]; 				\
-   glNormal3fv (nnn);						\
-}
-*/
-
-#define	C3F(x)		glColor3fv(x)
-#define	T2F_F(x,y)	glTexCoord2f(x,y)
-#define	T2F_D(x,y)	glTexCoord2d(x,y)
-
-#define	POPMATRIX()	glPopMatrix()
-#define	PUSHMATRIX()	glPushMatrix()
-
-#define	MULTMATRIX_F(x)	glMultMatrixf ((const GLfloat *)x)
-#define	LOADMATRIX_F(x)	glLoadMatrixf ((const GLfloat *)x)
-
-#define	MULTMATRIX_D(x)	glMultMatrixd ((const GLdouble *)x)
-#define	LOADMATRIX_D(x)	glLoadMatrixd ((const GLdouble *)x)
-
-#define __IS_LIGHTING_ON  (glIsEnabled(GL_LIGHTING))
-
-/* ====================================================== */
-#ifdef AUTO_TEXTURE
-
-#define BGNTMESH(i,len) { 					\
-	if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))(i,len);\
-	glBegin (GL_TRIANGLE_STRIP); 			\
-}
-
-#define BGNPOLYGON() { 					\
-	if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))();\
-	glBegin (GL_POLYGON);				\
-}
-
-#define N3F_F(x) { 					\
-	if(_gle_gc -> n3f_gen_texture) (*(_gle_gc -> n3f_gen_texture))(x); \
-	glNormal3fv(x); 				\
-}
-
-#define N3F_D(x) { 					\
-	if(_gle_gc -> n3d_gen_texture) (*(_gle_gc -> n3d_gen_texture))(x); \
-	glNormal3dv(x); 				\
-}
-
-#define V3F_F(x,j,id) { 					\
-	if(_gle_gc -> v3f_gen_texture) (*(_gle_gc -> v3f_gen_texture))(x,j,id);\
-	glVertex3fv(x); 				\
-}
-
-#define V3F_D(x,j,id) { 					\
-	if(_gle_gc -> v3d_gen_texture) (*(_gle_gc -> v3d_gen_texture))(x,j,id); \
-	glVertex3dv(x); 				\
-}
-
-#define ENDTMESH() {					\
-	if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \
-	glEnd ();					\
-}
-
-#define ENDPOLYGON() {					\
-	if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \
-	glEnd ();					\
-}
-
-/* ====================================================== */
-#else /* AUTO_TEXTURE */
-
-#define BGNTMESH(i,len)	glBegin (GL_TRIANGLE_STRIP);
-#define BGNPOLYGON() 	glBegin (GL_POLYGON);
-
-#define	N3F_F(x)	glNormal3fv(x)
-#define	N3F_D(x)	glNormal3dv(x)
-#define V3F_F(x,j,id)	glVertex3fv(x);
-#define V3F_D(x,j,id)	glVertex3dv(x);
-
-#define ENDTMESH()	glEnd ()
-#define ENDPOLYGON()	glEnd()
-
-#endif /* AUTO_TEXTURE */
-
-#endif /* OPENGL_10 */
-
-/* ====================================================== */
-
-
-#endif /* __GLE_PORT_H__ */
-/* ================== END OF FILE ======================= */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/rot.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-
-/*
- * rot.h
- *
- * FUNCTION:
- * rotation matrix utilities
- *
- * HISTORY:
- * Linas Vepstas Aug 1990
- */
-
-/* ========================================================== */
-/* 
- * The MACROS below generate and return more traditional rotation
- * matrices -- matrices for rotations about principal axes.
- */
-/* ========================================================== */
-
-#define ROTX_CS(m,cosine,sine)		\
-{					\
-   /* rotation about the x-axis */	\
-					\
-   m[0][0] = 1.0;			\
-   m[0][1] = 0.0;			\
-   m[0][2] = 0.0;			\
-   m[0][3] = 0.0;			\
-					\
-   m[1][0] = 0.0;			\
-   m[1][1] = (cosine);			\
-   m[1][2] = (sine);			\
-   m[1][3] = 0.0;			\
-					\
-   m[2][0] = 0.0;			\
-   m[2][1] = -(sine);			\
-   m[2][2] = (cosine);			\
-   m[2][3] = 0.0;			\
-					\
-   m[3][0] = 0.0;			\
-   m[3][1] = 0.0;			\
-   m[3][2] = 0.0;			\
-   m[3][3] = 1.0;			\
-}				
-
-/* ========================================================== */
-
-#define ROTY_CS(m,cosine,sine)		\
-{					\
-   /* rotation about the y-axis */	\
-					\
-   m[0][0] = (cosine);			\
-   m[0][1] = 0.0;			\
-   m[0][2] = -(sine);			\
-   m[0][3] = 0.0;			\
-					\
-   m[1][0] = 0.0;			\
-   m[1][1] = 1.0;			\
-   m[1][2] = 0.0;			\
-   m[1][3] = 0.0;			\
-					\
-   m[2][0] = (sine);			\
-   m[2][1] = 0.0;			\
-   m[2][2] = (cosine);			\
-   m[2][3] = 0.0;			\
-					\
-   m[3][0] = 0.0;			\
-   m[3][1] = 0.0;			\
-   m[3][2] = 0.0;			\
-   m[3][3] = 1.0;			\
-}
-
-/* ========================================================== */
-
-#define ROTZ_CS(m,cosine,sine)		\
-{					\
-   /* rotation about the z-axis */	\
-					\
-   m[0][0] = (cosine);			\
-   m[0][1] = (sine);			\
-   m[0][2] = 0.0;			\
-   m[0][3] = 0.0;			\
-					\
-   m[1][0] = -(sine);			\
-   m[1][1] = (cosine);			\
-   m[1][2] = 0.0;			\
-   m[1][3] = 0.0;			\
-					\
-   m[2][0] = 0.0;			\
-   m[2][1] = 0.0;			\
-   m[2][2] = 1.0;			\
-   m[2][3] = 0.0;			\
-					\
-   m[3][0] = 0.0;			\
-   m[3][1] = 0.0;			\
-   m[3][2] = 0.0;			\
-   m[3][3] = 1.0;			\
-}
-
-/* ========================================================== */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/segment.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-
-/*
- * MODULE: segment.h
- *
- * FUNCTION:
- * Contains function prototypes for segment drawing subroutines.
- * These are used only internally, and are not to be exported to
- * the user.
- *
- * HISTORY:
- * Create by Linas Vepstas
- * Added tube.h include to define gleDouble, tad February 2002
- */
-
-/* ============================================================ */
-
-#include "tube.h"
-
-extern void draw_segment_plain (int ncp,       /* number of contour points */
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           int inext, double len);
-
-extern void draw_segment_color (int ncp,       /* number of contour points */
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_segment_edge_n (int ncp,      /* number of contour points */
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           int inext, double len);
-
-extern void draw_segment_c_and_edge_n (int ncp,   
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_segment_facet_n (int ncp,     
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           int inext, double len);
-
-extern void draw_segment_c_and_facet_n (int ncp,    
-                           gleDouble front_contour[][3],
-                           gleDouble back_contour[][3],
-                           double norm_cont[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-/* ============================================================ */
-
-extern void draw_binorm_segment_edge_n (int ncp,  
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           int inext, double len);
-
-extern void draw_binorm_segment_c_and_edge_n (int ncp,   
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_binorm_segment_facet_n (int ncp, 
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           int inext, double len);
-
-extern void draw_binorm_segment_c_and_facet_n (int ncp,    
-                           double front_contour[][3],
-                           double back_contour[][3],
-                           double front_norm[][3],
-                           double back_norm[][3],
-                           float color_last[3],
-                           float color_next[3],
-                           int inext, double len);
-
-extern void draw_angle_style_back_cap (int ncp,        /* number of contour points */
-                           gleDouble bi[3],             /* biscetor */
-                           gleDouble point_array[][3]);  /* polyline */
-
-/* -------------------------- end of file -------------------------------- */
-
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/tube.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +0,0 @@
-/* 
- * tube.h
- *
- * FUNCTION:
- * Tubing and Extrusion header file.
- * This file provides protypes and defines for the extrusion 
- * and tubing primitives.
- *
- * HISTORY:
- * Linas Vepstas 1990, 1991
- */
-
-#ifndef __TUBE_H__
-#define __TUBE_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- GLE API revision history:
- 
- GLE_API_VERSION is updated to reflect GLE API changes (interface
- changes, semantic changes, deletions, or additions).
- 
- GLE_API_VERSION=228  GLUT 3.7 release of GLE.
-**/
-#ifndef GLE_API_VERSION  /* allow this to be overriden */
-#define GLE_API_VERSION                228
-#endif
-
-/* some types */
-#ifndef gleDouble
-    #define gleDouble double
-#endif
-typedef gleDouble gleAffine[2][3];
-
-/* ====================================================== */
-
-/* defines for tubing join styles */
-#define TUBE_JN_RAW          0x1
-#define TUBE_JN_ANGLE        0x2
-#define TUBE_JN_CUT          0x3
-#define TUBE_JN_ROUND        0x4
-#define TUBE_JN_MASK         0xf    /* mask bits */
-#define TUBE_JN_CAP          0x10
-
-/* determine how normal vectors are to be handled */
-#define TUBE_NORM_FACET      0x100
-#define TUBE_NORM_EDGE       0x200
-#define TUBE_NORM_PATH_EDGE  0x400 /* for spiral, lathe, helix primitives */
-#define TUBE_NORM_MASK       0xf00    /* mask bits */
-
-/* closed or open countours */
-#define TUBE_CONTOUR_CLOSED	0x1000
-
-#define GLE_TEXTURE_ENABLE	0x10000
-#define GLE_TEXTURE_STYLE_MASK	0xff
-#define GLE_TEXTURE_VERTEX_FLAT		1
-#define GLE_TEXTURE_NORMAL_FLAT		2
-#define GLE_TEXTURE_VERTEX_CYL		3
-#define GLE_TEXTURE_NORMAL_CYL		4
-#define GLE_TEXTURE_VERTEX_SPH		5
-#define GLE_TEXTURE_NORMAL_SPH		6
-#define GLE_TEXTURE_VERTEX_MODEL_FLAT	7
-#define GLE_TEXTURE_NORMAL_MODEL_FLAT	8
-#define GLE_TEXTURE_VERTEX_MODEL_CYL	9
-#define GLE_TEXTURE_NORMAL_MODEL_CYL	10
-#define GLE_TEXTURE_VERTEX_MODEL_SPH	11
-#define GLE_TEXTURE_NORMAL_MODEL_SPH	12
-
-#ifdef GL_32
-/* HACK for GL 3.2 -- needed because no way to tell if lighting is on.  */
-#define TUBE_LIGHTING_ON	0x80000000
-
-#define gleExtrusion		extrusion
-#define gleSetJoinStyle		setjoinstyle
-#define gleGetJoinStyle		getjoinstyle
-#define glePolyCone		polycone
-#define glePolyCylinder		polycylinder
-#define	gleSuperExtrusion	super_extrusion
-#define	gleTwistExtrusion	twist_extrusion
-#define	gleSpiral		spiral
-#define	gleLathe		lathe
-#define	gleHelicoid		helicoid
-#define	gleToroid		toroid
-#define	gleScrew		screw
-
-#endif /* GL_32 */
-
-extern int gleGetJoinStyle (void);
-extern void gleSetJoinStyle (int style);	/* bitwise OR of flags */
-extern int gleGetNumSlices(void);
-extern void gleSetNumSlices(int slices);
-
-/* draw polyclinder, specified as a polyline */
-extern void glePolyCylinder (int npoints,	/* num points in polyline */
-                   gleDouble point_array[][3],	/* polyline vertces */
-                   float color_array[][3],	/* colors at polyline verts */
-                   gleDouble radius);		/* radius of polycylinder */
-
-/* draw polycone, specified as a polyline with radii */
-extern void glePolyCone (int npoints,	 /* numpoints in poly-line */
-                   gleDouble point_array[][3],	/* polyline vertices */
-                   float color_array[][3],	/* colors at polyline verts */
-                   gleDouble radius_array[]); /* cone radii at polyline verts */
-
-/* extrude arbitrary 2D contour along arbitrary 3D path */
-extern void gleExtrusion (int ncp,         /* number of contour points */
-                gleDouble contour[][2],     /* 2D contour */
-                gleDouble cont_normal[][2], /* 2D contour normals */
-                gleDouble up[3],            /* up vector for contour */
-                int npoints,            /* numpoints in poly-line */
-                gleDouble point_array[][3], /* polyline vertices */
-                float color_array[][3]); /* colors at polyline verts */
-
-/* extrude 2D contour, specifying local rotations (twists) */
-extern void gleTwistExtrusion (int ncp,         /* number of contour points */
-                gleDouble contour[][2],    /* 2D contour */
-                gleDouble cont_normal[][2], /* 2D contour normals */
-                gleDouble up[3],           /* up vector for contour */
-                int npoints,           /* numpoints in poly-line */
-                gleDouble point_array[][3],        /* polyline vertices */
-                float color_array[][3],        /* color at polyline verts */
-                gleDouble twist_array[]);   /* countour twists (in degrees) */
-
-/* extrude 2D contour, specifying local affine tranformations */
-extern void gleSuperExtrusion (int ncp,  /* number of contour points */
-                gleDouble contour[][2],    /* 2D contour */
-                gleDouble cont_normal[][2], /* 2D contour normals */
-                gleDouble up[3],           /* up vector for contour */
-                int npoints,           /* numpoints in poly-line */
-                gleDouble point_array[][3],        /* polyline vertices */
-                float color_array[][3],        /* color at polyline verts */
-                gleDouble xform_array[][2][3]);   /* 2D contour xforms */
-
-/* spiral moves contour along helical path by parallel transport */
-extern void gleSpiral (int ncp,        /* number of contour points */
-             gleDouble contour[][2],    /* 2D contour */
-             gleDouble cont_normal[][2], /* 2D contour normals */
-             gleDouble up[3],           /* up vector for contour */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* lathe moves contour along helical path by helically shearing 3D space */
-extern void gleLathe (int ncp,        /* number of contour points */
-             gleDouble contour[][2],    /* 2D contour */
-             gleDouble cont_normal[][2], /* 2D contour normals */
-             gleDouble up[3],           /* up vector for contour */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* similar to spiral, except contour is a circle */
-extern void gleHelicoid (gleDouble rToroid, /* circle contour (torus) radius */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* similar to lathe, except contour is a circle */
-extern void gleToroid (gleDouble rToroid, /* circle contour (torus) radius */
-             gleDouble startRadius,	/* spiral starts in x-y plane */
-             gleDouble drdTheta,        /* change in radius per revolution */
-             gleDouble startZ,		/* starting z value */
-             gleDouble dzdTheta,        /* change in Z per revolution */
-             gleDouble startXform[2][3], /* starting contour affine xform */
-             gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
-             gleDouble startTheta,	/* start angle in x-y plane */
-             gleDouble sweepTheta);	/* degrees to spiral around */
-
-/* draws a screw shape */
-extern void gleScrew (int ncp,          /* number of contour points */
-             gleDouble contour[][2],    /* 2D contour */
-             gleDouble cont_normal[][2], /* 2D contour normals */
-             gleDouble up[3],           /* up vector for contour */
-             gleDouble startz,          /* start of segment */
-             gleDouble endz,            /* end of segment */
-             gleDouble twist);          /* number of rotations */
-
-extern void gleTextureMode (int mode);
-
-#ifdef __cplusplus
-}
-
-#endif
-#endif /* __TUBE_H__ */
-/* ================== END OF FILE ======================= */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/tube_gc.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-
-/*
- * tube_gc.h
- *
- * FUNCTION:
- * This file allows for easy changes to changes in the way the extrusion
- * library handles state info (i.e. context).
- *
- * HISTORY:
- * Linas Vepstas --- February 1993
- * Added auto texture coord generation hacks, Linas April 1994
- * Added tube.h include to define gleDouble, tad February 2002
- */
-
-#include "tube.h"
-#include "port.h" /* for gleVector */
-
-typedef float gleColor[3];
-typedef double gleTwoVec[2];
-
-typedef struct {
-
-   /* public methods */
-   void (*bgn_gen_texture) (int, double);
-   void (*n3f_gen_texture) (float *);
-   void (*n3d_gen_texture) (double *);
-   void (*v3f_gen_texture) (float *, int, int);
-   void (*v3d_gen_texture) (double *, int, int);
-   void (*end_gen_texture) (void);
-
-   /* protected members -- "general knowledge" stuff */
-   int join_style;
-
-   /* arguments passed into extrusion code */ 
-   int ncp;     /* number of contour points */
-   gleTwoVec *contour;    /* 2D contour */
-   gleTwoVec *cont_normal;  /* 2D contour normals */
-   gleDouble *up;               /* up vector */
-   int npoints;  /* number of points in polyline */
-   gleVector *point_array;     /* path */
-   gleColor *color_array;         /* path colors */
-   gleAffine *xform_array;  /* contour xforms */
-
-   /* private members, used by texturing code */
-   int num_vert;
-   int segment_number;
-   double segment_length;
-   double accum_seg_len;
-   double prev_x;
-   double prev_y;
-
-   void (*save_bgn_gen_texture) (int, double);
-   void (*save_n3f_gen_texture) (float *);
-   void (*save_n3d_gen_texture) (double *);
-   void (*save_v3f_gen_texture) (float *, int, int);
-   void (*save_v3d_gen_texture) (double *, int, int);
-   void (*save_end_gen_texture) (void);
-
-} gleGC;
-
-extern gleGC *_gle_gc;
-extern gleGC * gleCreateGC (void);
-
-#define INIT_GC() {if (!_gle_gc) _gle_gc = gleCreateGC(); }
-#define extrusion_join_style (_gle_gc->join_style)
-
-#define __TUBE_CLOSE_CONTOUR (extrusion_join_style & TUBE_CONTOUR_CLOSED)
-#define __TUBE_DRAW_CAP (extrusion_join_style & TUBE_JN_CAP)
-#define __TUBE_DRAW_FACET_NORMALS (extrusion_join_style & TUBE_NORM_FACET)
-#define __TUBE_DRAW_PATH_EDGE_NORMALS (extrusion_join_style & TUBE_NORM_PATH_EDGE)
-
-#define __TUBE_STYLE (extrusion_join_style & TUBE_JN_MASK)
-#define __TUBE_RAW_JOIN (extrusion_join_style & TUBE_JN_RAW)
-#define __TUBE_CUT_JOIN (extrusion_join_style & TUBE_JN_CUT)
-#define __TUBE_ANGLE_JOIN (extrusion_join_style & TUBE_JN_ANGLE)
-#define __TUBE_ROUND_JOIN (extrusion_join_style & TUBE_JN_ROUND)
-
-/* ======================= END OF FILE ========================== */
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Headers/vvector.h	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1339 +0,0 @@
-
-/*
- * vvector.h
- *
- * FUNCTION:
- * This file contains a number of utilities useful for handling
- * 3D vectors
- * 
- * HISTORY:
- * Written by Linas Vepstas, August 1991
- * Added 2D code, March 1993
- * Added Outer products, C++ proofed, Linas Vepstas October 1993
- */
-
-#ifndef __GUTIL_VECTOR_H__
-#define __GUTIL_VECTOR_H__
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-
-#include <math.h>
-#include "port.h"
-
-/* ========================================================== */
-/* Zero out a 2D vector */
-
-#define VEC_ZERO_2(a)				\
-{						\
-   (a)[0] = (a)[1] = 0.0;			\
-}
-
-/* ========================================================== */
-/* Zero out a 3D vector */
-
-#define VEC_ZERO(a)				\
-{						\
-   (a)[0] = (a)[1] = (a)[2] = 0.0;		\
-}
-
-/* ========================================================== */
-/* Zero out a 4D vector */
-
-#define VEC_ZERO_4(a)				\
-{						\
-   (a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0;	\
-}
-
-/* ========================================================== */
-/* Vector copy */
-
-#define VEC_COPY_2(b,a)				\
-{						\
-   (b)[0] = (a)[0];				\
-   (b)[1] = (a)[1];				\
-}
-
-/* ========================================================== */
-/* Copy 3D vector */
-
-#define VEC_COPY(b,a)				\
-{						\
-   (b)[0] = (a)[0];				\
-   (b)[1] = (a)[1];				\
-   (b)[2] = (a)[2];				\
-}
-
-/* ========================================================== */
-/* Copy 4D vector */
-
-#define VEC_COPY_4(b,a)				\
-{						\
-   (b)[0] = (a)[0];				\
-   (b)[1] = (a)[1];				\
-   (b)[2] = (a)[2];				\
-   (b)[3] = (a)[3];				\
-}
-
-/* ========================================================== */
-/* Vector difference */
-
-#define VEC_DIFF_2(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] - (v1)[0];		\
-   (v21)[1] = (v2)[1] - (v1)[1];		\
-}
-
-/* ========================================================== */
-/* Vector difference */
-
-#define VEC_DIFF(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] - (v1)[0];		\
-   (v21)[1] = (v2)[1] - (v1)[1];		\
-   (v21)[2] = (v2)[2] - (v1)[2];		\
-}
-
-/* ========================================================== */
-/* Vector difference */
-
-#define VEC_DIFF_4(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] - (v1)[0];		\
-   (v21)[1] = (v2)[1] - (v1)[1];		\
-   (v21)[2] = (v2)[2] - (v1)[2];		\
-   (v21)[3] = (v2)[3] - (v1)[3];		\
-}
-
-/* ========================================================== */
-/* Vector sum */
-
-#define VEC_SUM_2(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] + (v1)[0];		\
-   (v21)[1] = (v2)[1] + (v1)[1];		\
-}
-
-/* ========================================================== */
-/* Vector sum */
-
-#define VEC_SUM(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] + (v1)[0];		\
-   (v21)[1] = (v2)[1] + (v1)[1];		\
-   (v21)[2] = (v2)[2] + (v1)[2];		\
-}
-
-/* ========================================================== */
-/* Vector sum */
-
-#define VEC_SUM_4(v21,v2,v1)			\
-{						\
-   (v21)[0] = (v2)[0] + (v1)[0];		\
-   (v21)[1] = (v2)[1] + (v1)[1];		\
-   (v21)[2] = (v2)[2] + (v1)[2];		\
-   (v21)[3] = (v2)[3] + (v1)[3];		\
-}
-
-/* ========================================================== */
-/* scalar times vector */
-
-#define VEC_SCALE_2(c,a,b)			\
-{						\
-   (c)[0] = (a)*(b)[0];				\
-   (c)[1] = (a)*(b)[1];				\
-}
-
-/* ========================================================== */
-/* scalar times vector */
-
-#define VEC_SCALE(c,a,b)			\
-{						\
-   (c)[0] = (a)*(b)[0];				\
-   (c)[1] = (a)*(b)[1];				\
-   (c)[2] = (a)*(b)[2];				\
-}
-
-/* ========================================================== */
-/* scalar times vector */
-
-#define VEC_SCALE_4(c,a,b)			\
-{						\
-   (c)[0] = (a)*(b)[0];				\
-   (c)[1] = (a)*(b)[1];				\
-   (c)[2] = (a)*(b)[2];				\
-   (c)[3] = (a)*(b)[3];				\
-}
-
-/* ========================================================== */
-/* accumulate scaled vector */
-
-#define VEC_ACCUM_2(c,a,b)			\
-{						\
-   (c)[0] += (a)*(b)[0];			\
-   (c)[1] += (a)*(b)[1];			\
-}
-
-/* ========================================================== */
-/* accumulate scaled vector */
-
-#define VEC_ACCUM(c,a,b)			\
-{						\
-   (c)[0] += (a)*(b)[0];			\
-   (c)[1] += (a)*(b)[1];			\
-   (c)[2] += (a)*(b)[2];			\
-}
-
-/* ========================================================== */
-/* accumulate scaled vector */
-
-#define VEC_ACCUM_4(c,a,b)			\
-{						\
-   (c)[0] += (a)*(b)[0];			\
-   (c)[1] += (a)*(b)[1];			\
-   (c)[2] += (a)*(b)[2];			\
-   (c)[3] += (a)*(b)[3];			\
-}
-
-/* ========================================================== */
-/* Vector dot product */
-
-#define VEC_DOT_PRODUCT_2(c,a,b)			\
-{							\
-   c = (a)[0]*(b)[0] + (a)[1]*(b)[1];			\
-}
-
-/* ========================================================== */
-/* Vector dot product */
-
-#define VEC_DOT_PRODUCT(c,a,b)				\
-{							\
-   c = (a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2];	\
-}
-
-/* ========================================================== */
-/* Vector dot product */
-
-#define VEC_DOT_PRODUCT_4(c,a,b)			\
-{							\
-   c = (a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3] ;	\
-}
-
-/* ========================================================== */
-/* vector impact parameter (squared) */
-
-#define VEC_IMPACT_SQ(bsq,direction,position)		\
-{							\
-   gleDouble vlen, llel;					\
-   VEC_DOT_PRODUCT (vlen, position, position);		\
-   VEC_DOT_PRODUCT (llel, direction, position);		\
-   bsq = vlen - llel*llel;				\
-}
-
-/* ========================================================== */
-/* vector impact parameter */
-
-#define VEC_IMPACT(bsq,direction,position)		\
-{							\
-   VEC_IMPACT_SQ(bsq,direction,position);		\
-   bsq = sqrt (bsq);					\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_LENGTH_2(vlen,a)			\
-{						\
-   vlen = a[0]*a[0] + a[1]*a[1];			\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_LENGTH(vlen,a)			\
-{						\
-   vlen = (a)[0]*(a)[0] + (a)[1]*(a)[1];		\
-   vlen += (a)[2]*(a)[2];			\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_LENGTH_4(vlen,a)			\
-{						\
-   vlen = (a)[0]*(a)[0] + (a)[1]*(a)[1];		\
-   vlen += (a)[2]*(a)[2];			\
-   vlen += (a)[3] * (a)[3];			\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* distance between two points */
-
-#define VEC_DISTANCE(vlen,va,vb)			\
-{						\
-    gleDouble tmp[4];				\
-    VEC_DIFF (tmp, vb, va);			\
-    VEC_LENGTH (vlen, tmp);			\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_CONJUGATE_LENGTH(vlen,a)		\
-{						\
-   vlen = 1.0 - a[0]*a[0] - a[1]*a[1] - a[2]*a[2];\
-   vlen = sqrt (vlen);				\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_NORMALIZE(a)			\
-{						\
-   double vlen;					\
-   VEC_LENGTH (vlen,a);				\
-   if (vlen != 0.0) {				\
-      vlen = 1.0 / vlen;				\
-      a[0] *= vlen;				\
-      a[1] *= vlen;				\
-      a[2] *= vlen;				\
-   }						\
-}
-
-/* ========================================================== */
-/* Vector length */
-
-#define VEC_RENORMALIZE(a,newlen)		\
-{						\
-   double vlen;					\
-   VEC_LENGTH (vlen,a);				\
-   if (vlen != 0.0) {				\
-      vlen = newlen / vlen;				\
-      a[0] *= vlen;				\
-      a[1] *= vlen;				\
-      a[2] *= vlen;				\
-   }						\
-}
-
-/* ========================================================== */
-/* 3D Vector cross product yeilding vector */
-
-#define VEC_CROSS_PRODUCT(c,a,b)		\
-{						\
-   c[0] = (a)[1] * (b)[2] - (a)[2] * (b)[1];	\
-   c[1] = (a)[2] * (b)[0] - (a)[0] * (b)[2];	\
-   c[2] = (a)[0] * (b)[1] - (a)[1] * (b)[0];	\
-}
-
-/* ========================================================== */
-/* Vector perp -- assumes that n is of unit length 
- * accepts vector v, subtracts out any component parallel to n */
-
-#define VEC_PERP(vp,v,n)			\
-{						\
-   double vdot;					\
-						\
-   VEC_DOT_PRODUCT (vdot, v, n);			\
-   vp[0] = (v)[0] - (vdot) * (n)[0];		\
-   vp[1] = (v)[1] - (vdot) * (n)[1];		\
-   vp[2] = (v)[2] - (vdot) * (n)[2];		\
-}
-
-/* ========================================================== */
-/* Vector parallel -- assumes that n is of unit length 
- * accepts vector v, subtracts out any component perpendicular to n */
-
-#define VEC_PARALLEL(vp,v,n)			\
-{						\
-   double vdot;					\
-						\
-   VEC_DOT_PRODUCT (vdot, v, n);			\
-   vp[0] = (vdot) * (n)[0];			\
-   vp[1] = (vdot) * (n)[1];			\
-   vp[2] = (vdot) * (n)[2];			\
-}
-
-/* ========================================================== */
-/* Vector reflection -- assumes n is of unit length */
-/* Takes vector v, reflects it against reflector n, and returns vr */
-
-#define VEC_REFLECT(vr,v,n)			\
-{						\
-   double vdot;					\
-						\
-   VEC_DOT_PRODUCT (vdot, v, n);			\
-   vr[0] = (v)[0] - 2.0 * (vdot) * (n)[0];	\
-   vr[1] = (v)[1] - 2.0 * (vdot) * (n)[1];	\
-   vr[2] = (v)[2] - 2.0 * (vdot) * (n)[2];	\
-}
-
-/* ========================================================== */
-/* Vector blending */
-/* Takes two vectors a, b, blends them together */ 
-
-#define VEC_BLEND(vr,sa,a,sb,b)			\
-{						\
-						\
-   vr[0] = (sa) * (a)[0] + (sb) * (b)[0];	\
-   vr[1] = (sa) * (a)[1] + (sb) * (b)[1];	\
-   vr[2] = (sa) * (a)[2] + (sb) * (b)[2];	\
-}
-
-/* ========================================================== */
-/* Vector print */
-
-#define VEC_PRINT_2(a)					\
-{							\
-   double vlen;						\
-   VEC_LENGTH_2 (vlen, a);					\
-   printf (" a is %f %f length of a is %f \n", a[0], a[1], vlen); \
-}
-
-/* ========================================================== */
-/* Vector print */
-
-#define VEC_PRINT(a)					\
-{							\
-   double vlen;						\
-   VEC_LENGTH (vlen, (a));				\
-   printf (" a is %f %f %f length of a is %f \n", (a)[0], (a)[1], (a)[2], vlen); \
-}
-
-/* ========================================================== */
-/* Vector print */
-
-#define VEC_PRINT_4(a)					\
-{							\
-   double vlen;						\
-   VEC_LENGTH_4 (vlen, (a));				\
-   printf (" a is %f %f %f %f length of a is %f \n",	\
-       (a)[0], (a)[1], (a)[2], (a)[3], vlen);		\
-}
-
-/* ========================================================== */
-/* print matrix */
-
-#define MAT_PRINT_4X4(mmm) {				\
-   int i,j;						\
-   printf ("matrix mmm is \n");				\
-   if (mmm == NULL) {					\
-      printf (" Null \n");				\
-   } else {						\
-      for (i=0; i<4; i++) {				\
-         for (j=0; j<4; j++) {				\
-            printf ("%f ", mmm[i][j]);			\
-         }						\
-         printf (" \n");				\
-      }							\
-   }							\
-}
-
-/* ========================================================== */
-/* print matrix */
-
-#define MAT_PRINT_3X3(mmm) {				\
-   int i,j;						\
-   printf ("matrix mmm is \n");				\
-   if (mmm == NULL) {					\
-      printf (" Null \n");				\
-   } else {						\
-      for (i=0; i<3; i++) {				\
-         for (j=0; j<3; j++) {				\
-            printf ("%f ", mmm[i][j]);			\
-         }						\
-         printf (" \n");				\
-      }							\
-   }							\
-}
-
-/* ========================================================== */
-/* print matrix */
-
-#define MAT_PRINT_2X3(mmm) {				\
-   int i,j;						\
-   printf ("matrix mmm is \n");				\
-   if (mmm == NULL) {					\
-      printf (" Null \n");				\
-   } else {						\
-      for (i=0; i<2; i++) {				\
-         for (j=0; j<3; j++) {				\
-            printf ("%f ", mmm[i][j]);			\
-         }						\
-         printf (" \n");				\
-      }							\
-   }							\
-}
-
-/* ========================================================== */
-/* initialize matrix */
-
-#define IDENTIFY_MATRIX_3X3(m)			\
-{						\
-   m[0][0] = 1.0;				\
-   m[0][1] = 0.0;				\
-   m[0][2] = 0.0;				\
-						\
-   m[1][0] = 0.0;				\
-   m[1][1] = 1.0;				\
-   m[1][2] = 0.0;				\
-						\
-   m[2][0] = 0.0;				\
-   m[2][1] = 0.0;				\
-   m[2][2] = 1.0;				\
-}
-
-/* ========================================================== */
-/* initialize matrix */
-
-#define IDENTIFY_MATRIX_4X4(m)			\
-{						\
-   m[0][0] = 1.0;				\
-   m[0][1] = 0.0;				\
-   m[0][2] = 0.0;				\
-   m[0][3] = 0.0;				\
-						\
-   m[1][0] = 0.0;				\
-   m[1][1] = 1.0;				\
-   m[1][2] = 0.0;				\
-   m[1][3] = 0.0;				\
-						\
-   m[2][0] = 0.0;				\
-   m[2][1] = 0.0;				\
-   m[2][2] = 1.0;				\
-   m[2][3] = 0.0;				\
-						\
-   m[3][0] = 0.0;				\
-   m[3][1] = 0.0;				\
-   m[3][2] = 0.0;				\
-   m[3][3] = 1.0;				\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_2X2(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-				\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_2X3(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-   b[0][2] = a[0][2];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[1][2];		\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_3X3(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-   b[0][2] = a[0][2];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[1][2];		\
-				\
-   b[2][0] = a[2][0];		\
-   b[2][1] = a[2][1];		\
-   b[2][2] = a[2][2];		\
-}
-
-/* ========================================================== */
-/* matrix copy */
-
-#define COPY_MATRIX_4X4(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[0][1];		\
-   b[0][2] = a[0][2];		\
-   b[0][3] = a[0][3];		\
-				\
-   b[1][0] = a[1][0];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[1][2];		\
-   b[1][3] = a[1][3];		\
-				\
-   b[2][0] = a[2][0];		\
-   b[2][1] = a[2][1];		\
-   b[2][2] = a[2][2];		\
-   b[2][3] = a[2][3];		\
-				\
-   b[3][0] = a[3][0];		\
-   b[3][1] = a[3][1];		\
-   b[3][2] = a[3][2];		\
-   b[3][3] = a[3][3];		\
-}
-
-/* ========================================================== */
-/* matrix transpose */
-
-#define TRANSPOSE_MATRIX_2X2(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[1][0];		\
-				\
-   b[1][0] = a[0][1];		\
-   b[1][1] = a[1][1];		\
-}
-
-/* ========================================================== */
-/* matrix transpose */
-
-#define TRANSPOSE_MATRIX_3X3(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[1][0];		\
-   b[0][2] = a[2][0];		\
-				\
-   b[1][0] = a[0][1];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[2][1];		\
-				\
-   b[2][0] = a[0][2];		\
-   b[2][1] = a[1][2];		\
-   b[2][2] = a[2][2];		\
-}
-
-/* ========================================================== */
-/* matrix transpose */
-
-#define TRANSPOSE_MATRIX_4X4(b,a)	\
-{				\
-   b[0][0] = a[0][0];		\
-   b[0][1] = a[1][0];		\
-   b[0][2] = a[2][0];		\
-   b[0][3] = a[3][0];		\
-				\
-   b[1][0] = a[0][1];		\
-   b[1][1] = a[1][1];		\
-   b[1][2] = a[2][1];		\
-   b[1][3] = a[3][1];		\
-				\
-   b[2][0] = a[0][2];		\
-   b[2][1] = a[1][2];		\
-   b[2][2] = a[2][2];		\
-   b[2][3] = a[3][2];		\
-				\
-   b[3][0] = a[0][3];		\
-   b[3][1] = a[1][3];		\
-   b[3][2] = a[2][3];		\
-   b[3][3] = a[3][3];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define SCALE_MATRIX_2X2(b,s,a)		\
-{					\
-   b[0][0] = (s) * a[0][0];		\
-   b[0][1] = (s) * a[0][1];		\
-					\
-   b[1][0] = (s) * a[1][0];		\
-   b[1][1] = (s) * a[1][1];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define SCALE_MATRIX_3X3(b,s,a)		\
-{					\
-   b[0][0] = (s) * a[0][0];		\
-   b[0][1] = (s) * a[0][1];		\
-   b[0][2] = (s) * a[0][2];		\
-					\
-   b[1][0] = (s) * a[1][0];		\
-   b[1][1] = (s) * a[1][1];		\
-   b[1][2] = (s) * a[1][2];		\
-					\
-   b[2][0] = (s) * a[2][0];		\
-   b[2][1] = (s) * a[2][1];		\
-   b[2][2] = (s) * a[2][2];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define SCALE_MATRIX_4X4(b,s,a)		\
-{					\
-   b[0][0] = (s) * a[0][0];		\
-   b[0][1] = (s) * a[0][1];		\
-   b[0][2] = (s) * a[0][2];		\
-   b[0][3] = (s) * a[0][3];		\
-					\
-   b[1][0] = (s) * a[1][0];		\
-   b[1][1] = (s) * a[1][1];		\
-   b[1][2] = (s) * a[1][2];		\
-   b[1][3] = (s) * a[1][3];		\
-					\
-   b[2][0] = (s) * a[2][0];		\
-   b[2][1] = (s) * a[2][1];		\
-   b[2][2] = (s) * a[2][2];		\
-   b[2][3] = (s) * a[2][3];		\
-					\
-   b[3][0] = s * a[3][0];		\
-   b[3][1] = s * a[3][1];		\
-   b[3][2] = s * a[3][2];		\
-   b[3][3] = s * a[3][3];		\
-}
-
-/* ========================================================== */
-/* multiply matrix by scalar */
-
-#define ACCUM_SCALE_MATRIX_2X2(b,s,a)		\
-{					\
-   b[0][0] += (s) * a[0][0];		\
-   b[0][1] += (s) * a[0][1];		\
-					\
-   b[1][0] += (s) * a[1][0];		\
-   b[1][1] += (s) * a[1][1];		\
-}
-
-/* +========================================================== */
-/* multiply matrix by scalar */
-
-#define ACCUM_SCALE_MATRIX_3X3(b,s,a)		\
-{					\
-   b[0][0] += (s) * a[0][0];		\
-   b[0][1] += (s) * a[0][1];		\
-   b[0][2] += (s) * a[0][2];		\
-					\
-   b[1][0] += (s) * a[1][0];		\
-   b[1][1] += (s) * a[1][1];		\
-   b[1][2] += (s) * a[1][2];		\
-					\
-   b[2][0] += (s) * a[2][0];		\
-   b[2][1] += (s) * a[2][1];		\
-   b[2][2] += (s) * a[2][2];		\
-}
-
-/* +========================================================== */
-/* multiply matrix by scalar */
-
-#define ACCUM_SCALE_MATRIX_4X4(b,s,a)		\
-{					\
-   b[0][0] += (s) * a[0][0];		\
-   b[0][1] += (s) * a[0][1];		\
-   b[0][2] += (s) * a[0][2];		\
-   b[0][3] += (s) * a[0][3];		\
-					\
-   b[1][0] += (s) * a[1][0];		\
-   b[1][1] += (s) * a[1][1];		\
-   b[1][2] += (s) * a[1][2];		\
-   b[1][3] += (s) * a[1][3];		\
-					\
-   b[2][0] += (s) * a[2][0];		\
-   b[2][1] += (s) * a[2][1];		\
-   b[2][2] += (s) * a[2][2];		\
-   b[2][3] += (s) * a[2][3];		\
-					\
-   b[3][0] += (s) * a[3][0];		\
-   b[3][1] += (s) * a[3][1];		\
-   b[3][2] += (s) * a[3][2];		\
-   b[3][3] += (s) * a[3][3];		\
-}
-
-/* +========================================================== */
-/* matrix product */
-/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
-
-#define MATRIX_PRODUCT_2X2(c,a,b)		\
-{						\
-   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0];	\
-   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1];	\
-						\
-   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0];	\
-   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1];	\
-						\
-}
-
-/* ========================================================== */
-/* matrix product */
-/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
-
-#define MATRIX_PRODUCT_3X3(c,a,b)				\
-{								\
-   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0];	\
-   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1];	\
-   c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2];	\
-								\
-   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0];	\
-   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1];	\
-   c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2];	\
-								\
-   c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0];	\
-   c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1];	\
-   c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2];	\
-}
-
-/* ========================================================== */
-/* matrix product */
-/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
-
-#define MATRIX_PRODUCT_4X4(c,a,b)		\
-{						\
-   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0];\
-   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1];\
-   c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2];\
-   c[0][3] = a[0][0]*b[0][3]+a[0][1]*b[1][3]+a[0][2]*b[2][3]+a[0][3]*b[3][3];\
-						\
-   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]+a[1][3]*b[3][0];\
-   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1];\
-   c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]+a[1][3]*b[3][2];\
-   c[1][3] = a[1][0]*b[0][3]+a[1][1]*b[1][3]+a[1][2]*b[2][3]+a[1][3]*b[3][3];\
-						\
-   c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]+a[2][3]*b[3][0];\
-   c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]+a[2][3]*b[3][1];\
-   c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]+a[2][3]*b[3][2];\
-   c[2][3] = a[2][0]*b[0][3]+a[2][1]*b[1][3]+a[2][2]*b[2][3]+a[2][3]*b[3][3];\
-						\
-   c[3][0] = a[3][0]*b[0][0]+a[3][1]*b[1][0]+a[3][2]*b[2][0]+a[3][3]*b[3][0];\
-   c[3][1] = a[3][0]*b[0][1]+a[3][1]*b[1][1]+a[3][2]*b[2][1]+a[3][3]*b[3][1];\
-   c[3][2] = a[3][0]*b[0][2]+a[3][1]*b[1][2]+a[3][2]*b[2][2]+a[3][3]*b[3][2];\
-   c[3][3] = a[3][0]*b[0][3]+a[3][1]*b[1][3]+a[3][2]*b[2][3]+a[3][3]*b[3][3];\
-}
-
-/* ========================================================== */
-/* matrix times vector */
-
-#define MAT_DOT_VEC_2X2(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1];				\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1];				\
-}
-
-/* ========================================================== */
-/* matrix times vector */
-
-#define MAT_DOT_VEC_3X3(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2];		\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2];		\
-   p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2];		\
-}
-
-/* ========================================================== */
-/* matrix times vector */
-
-#define MAT_DOT_VEC_4X4(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]*v[3];	\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]*v[3];	\
-   p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]*v[3];	\
-   p[3] = m[3][0]*v[0] + m[3][1]*v[1] + m[3][2]*v[2] + m[3][3]*v[3];	\
-}
-
-/* ========================================================== */
-/* vector transpose times matrix */
-/* p[j] = v[0]*m[0][j] + v[1]*m[1][j] + v[2]*m[2][j]; */
-
-#define VEC_DOT_MAT_3X3(p,v,m)					\
-{								\
-   p[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0];		\
-   p[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1];		\
-   p[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2];		\
-}
-
-/* ========================================================== */
-/* affine matrix times vector */
-/* The matrix is assumed to be an affine matrix, with last two 
- * entries representing a translation */
-
-#define MAT_DOT_VEC_2X3(p,m,v)					\
-{								\
-   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2];		\
-   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2];		\
-}
-
-/* ========================================================== */
-/* inverse transpose of matrix times vector
- *
- * This macro computes inverse transpose of matrix m, 
- * and multiplies vector v into it, to yeild vector p
- *
- * DANGER !!! Do Not use this on normal vectors!!!
- * It will leave normals the wrong length !!!
- * See macro below for use on normals.
- */
-
-#define INV_TRANSP_MAT_DOT_VEC_2X2(p,m,v)			\
-{								\
-   gleDouble det;						\
-								\
-   det = m[0][0]*m[1][1] - m[0][1]*m[1][0];			\
-   p[0] = m[1][1]*v[0] - m[1][0]*v[1];				\
-   p[1] = - m[0][1]*v[0] + m[0][0]*v[1];			\
-								\
-   /* if matrix not singular, and not orthonormal, then renormalize */ \
-   if ((det!=1.0) && (det != 0.0)) {				\
-      det = 1.0 / det;						\
-      p[0] *= det;						\
-      p[1] *= det;						\
-   }								\
-}
-
-/* ========================================================== */
-/* transform normal vector by inverse transpose of matrix 
- * and then renormalize the vector 
- *
- * This macro computes inverse transpose of matrix m, 
- * and multiplies vector v into it, to yeild vector p
- * Vector p is then normalized.
- */
-
-
-#define NORM_XFORM_2X2(p,m,v)					\
-{								\
-   double mlen;							\
-								\
-   /* do nothing if off-diagonals are zero and diagonals are 	\
-    * equal */							\
-   if ((m[0][1] != 0.0) || (m[1][0] != 0.0) || (m[0][0] != m[1][1])) { \
-      p[0] = m[1][1]*v[0] - m[1][0]*v[1];			\
-      p[1] = - m[0][1]*v[0] + m[0][0]*v[1];			\
-								\
-      mlen = p[0]*p[0] + p[1]*p[1];				\
-      mlen = 1.0 / sqrt (mlen);					\
-      p[0] *= mlen;						\
-      p[1] *= mlen;						\
-   } else {							\
-      VEC_COPY_2 (p, v);					\
-   }								\
-}
-
-/* ========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define OUTER_PRODUCT_2X2(m,v,t)				\
-{								\
-   m[0][0] = v[0] * t[0];					\
-   m[0][1] = v[0] * t[1];					\
-								\
-   m[1][0] = v[1] * t[0];					\
-   m[1][1] = v[1] * t[1];					\
-}
-
-/* ========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define OUTER_PRODUCT_3X3(m,v,t)				\
-{								\
-   m[0][0] = v[0] * t[0];					\
-   m[0][1] = v[0] * t[1];					\
-   m[0][2] = v[0] * t[2];					\
-								\
-   m[1][0] = v[1] * t[0];					\
-   m[1][1] = v[1] * t[1];					\
-   m[1][2] = v[1] * t[2];					\
-								\
-   m[2][0] = v[2] * t[0];					\
-   m[2][1] = v[2] * t[1];					\
-   m[2][2] = v[2] * t[2];					\
-}
-
-/* ========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define OUTER_PRODUCT_4X4(m,v,t)				\
-{								\
-   m[0][0] = v[0] * t[0];					\
-   m[0][1] = v[0] * t[1];					\
-   m[0][2] = v[0] * t[2];					\
-   m[0][3] = v[0] * t[3];					\
-								\
-   m[1][0] = v[1] * t[0];					\
-   m[1][1] = v[1] * t[1];					\
-   m[1][2] = v[1] * t[2];					\
-   m[1][3] = v[1] * t[3];					\
-								\
-   m[2][0] = v[2] * t[0];					\
-   m[2][1] = v[2] * t[1];					\
-   m[2][2] = v[2] * t[2];					\
-   m[2][3] = v[2] * t[3];					\
-								\
-   m[3][0] = v[3] * t[0];					\
-   m[3][1] = v[3] * t[1];					\
-   m[3][2] = v[3] * t[2];					\
-   m[3][3] = v[3] * t[3];					\
-}
-
-/* +========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define ACCUM_OUTER_PRODUCT_2X2(m,v,t)				\
-{								\
-   m[0][0] += v[0] * t[0];					\
-   m[0][1] += v[0] * t[1];					\
-								\
-   m[1][0] += v[1] * t[0];					\
-   m[1][1] += v[1] * t[1];					\
-}
-
-/* +========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define ACCUM_OUTER_PRODUCT_3X3(m,v,t)				\
-{								\
-   m[0][0] += v[0] * t[0];					\
-   m[0][1] += v[0] * t[1];					\
-   m[0][2] += v[0] * t[2];					\
-								\
-   m[1][0] += v[1] * t[0];					\
-   m[1][1] += v[1] * t[1];					\
-   m[1][2] += v[1] * t[2];					\
-								\
-   m[2][0] += v[2] * t[0];					\
-   m[2][1] += v[2] * t[1];					\
-   m[2][2] += v[2] * t[2];					\
-}
-
-/* +========================================================== */
-/* outer product of vector times vector transpose 
- *
- * The outer product of vector v and vector transpose t yeilds 
- * dyadic matrix m.
- */
-
-#define ACCUM_OUTER_PRODUCT_4X4(m,v,t)				\
-{								\
-   m[0][0] += v[0] * t[0];					\
-   m[0][1] += v[0] * t[1];					\
-   m[0][2] += v[0] * t[2];					\
-   m[0][3] += v[0] * t[3];					\
-								\
-   m[1][0] += v[1] * t[0];					\
-   m[1][1] += v[1] * t[1];					\
-   m[1][2] += v[1] * t[2];					\
-   m[1][3] += v[1] * t[3];					\
-								\
-   m[2][0] += v[2] * t[0];					\
-   m[2][1] += v[2] * t[1];					\
-   m[2][2] += v[2] * t[2];					\
-   m[2][3] += v[2] * t[3];					\
-								\
-   m[3][0] += v[3] * t[0];					\
-   m[3][1] += v[3] * t[1];					\
-   m[3][2] += v[3] * t[2];					\
-   m[3][3] += v[3] * t[3];					\
-}
-
-/* +========================================================== */
-/* determinant of matrix
- *
- * Computes determinant of matrix m, returning d
- */
-
-#define DETERMINANT_2X2(d,m)					\
-{								\
-   d = m[0][0] * m[1][1] - m[0][1] * m[1][0];			\
-}
-
-/* ========================================================== */
-/* determinant of matrix
- *
- * Computes determinant of matrix m, returning d
- */
-
-#define DETERMINANT_3X3(d,m)					\
-{								\
-   d = m[0][0] * (m[1][1]*m[2][2] - m[1][2] * m[2][1]);		\
-   d -= m[0][1] * (m[1][0]*m[2][2] - m[1][2] * m[2][0]);	\
-   d += m[0][2] * (m[1][0]*m[2][1] - m[1][1] * m[2][0]);	\
-}
-
-/* ========================================================== */
-/* i,j,th cofactor of a 4x4 matrix
- *
- */
-
-#define COFACTOR_4X4_IJ(fac,m,i,j) 				\
-{								\
-   int ii[4], jj[4], k;						\
-								\
-   /* compute which row, columnt to skip */			\
-   for (k=0; k<i; k++) ii[k] = k;				\
-   for (k=i; k<3; k++) ii[k] = k+1;				\
-   for (k=0; k<j; k++) jj[k] = k;				\
-   for (k=j; k<3; k++) jj[k] = k+1;				\
-								\
-   (fac) = m[ii[0]][jj[0]] * (m[ii[1]][jj[1]]*m[ii[2]][jj[2]] 	\
-                            - m[ii[1]][jj[2]]*m[ii[2]][jj[1]]); \
-   (fac) -= m[ii[0]][jj[1]] * (m[ii[1]][jj[0]]*m[ii[2]][jj[2]]	\
-                             - m[ii[1]][jj[2]]*m[ii[2]][jj[0]]);\
-   (fac) += m[ii[0]][jj[2]] * (m[ii[1]][jj[0]]*m[ii[2]][jj[1]]	\
-                             - m[ii[1]][jj[1]]*m[ii[2]][jj[0]]);\
-								\
-   /* compute sign */						\
-   k = i+j;							\
-   if ( k != (k/2)*2) {						\
-      (fac) = -(fac);						\
-   }								\
-}
-
-/* ========================================================== */
-/* determinant of matrix
- *
- * Computes determinant of matrix m, returning d
- */
-
-#define DETERMINANT_4X4(d,m)					\
-{								\
-   double cofac;						\
-   COFACTOR_4X4_IJ (cofac, m, 0, 0);				\
-   d = m[0][0] * cofac;						\
-   COFACTOR_4X4_IJ (cofac, m, 0, 1);				\
-   d += m[0][1] * cofac;					\
-   COFACTOR_4X4_IJ (cofac, m, 0, 2);				\
-   d += m[0][2] * cofac;					\
-   COFACTOR_4X4_IJ (cofac, m, 0, 3);				\
-   d += m[0][3] * cofac;					\
-}
-
-/* ========================================================== */
-/* cofactor of matrix
- *
- * Computes cofactor of matrix m, returning a
- */
-
-#define COFACTOR_2X2(a,m)					\
-{								\
-   a[0][0] = (m)[1][1];						\
-   a[0][1] = - (m)[1][0];						\
-   a[1][0] = - (m)[0][1];						\
-   a[1][1] = (m)[0][0];						\
-}
-
-/* ========================================================== */
-/* cofactor of matrix
- *
- * Computes cofactor of matrix m, returning a
- */
-
-#define COFACTOR_3X3(a,m)					\
-{								\
-   a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1];			\
-   a[0][1] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]);		\
-   a[0][2] = m[1][0]*m[2][1] - m[1][1]*m[2][0];			\
-   a[1][0] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]);		\
-   a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0];			\
-   a[1][2] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]);		\
-   a[2][0] = m[0][1]*m[1][2] - m[0][2]*m[1][1];			\
-   a[2][1] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]);		\
-   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);		\
-}
-
-/* ========================================================== */
-/* cofactor of matrix
- *
- * Computes cofactor of matrix m, returning a
- */
-
-#define COFACTOR_4X4(a,m)					\
-{								\
-   int i,j;							\
-								\
-   for (i=0; i<4; i++) {					\
-      for (j=0; j<4; j++) {					\
-         COFACTOR_4X4_IJ (a[i][j], m, i, j);			\
-      }								\
-   }								\
-}
-
-/* ========================================================== */
-/* adjoint of matrix
- *
- * Computes adjoint of matrix m, returning a
- * (Note that adjoint is just the transpose of the cofactor matrix)
- */
-
-#define ADJOINT_2X2(a,m)					\
-{								\
-   a[0][0] = (m)[1][1];						\
-   a[1][0] = - (m)[1][0];						\
-   a[0][1] = - (m)[0][1];						\
-   a[1][1] = (m)[0][0];						\
-}
-
-/* ========================================================== */
-/* adjoint of matrix
- *
- * Computes adjoint of matrix m, returning a
- * (Note that adjoint is just the transpose of the cofactor matrix)
- */
-
-
-#define ADJOINT_3X3(a,m)					\
-{								\
-   a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1];			\
-   a[1][0] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]);		\
-   a[2][0] = m[1][0]*m[2][1] - m[1][1]*m[2][0];			\
-   a[0][1] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]);		\
-   a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0];			\
-   a[2][1] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]);		\
-   a[0][2] = m[0][1]*m[1][2] - m[0][2]*m[1][1];			\
-   a[1][2] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]);		\
-   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);		\
-}
-
-/* ========================================================== */
-/* adjoint of matrix
- *
- * Computes adjoint of matrix m, returning a
- * (Note that adjoint is just the transpose of the cofactor matrix)
- */
-
-#define ADJOINT_4X4(a,m)					\
-{								\
-   int i,j;							\
-								\
-   for (i=0; i<4; i++) {					\
-      for (j=0; j<4; j++) {					\
-         COFACTOR_4X4_IJ (a[j][i], m, i, j);			\
-      }								\
-   }								\
-}
-
-/* ========================================================== */
-/* compute adjoint of matrix and scale
- *
- * Computes adjoint of matrix m, scales it by s, returning a
- */
-
-#define SCALE_ADJOINT_2X2(a,s,m)				\
-{								\
-   a[0][0] = (s) * m[1][1];					\
-   a[1][0] = - (s) * m[1][0];					\
-   a[0][1] = - (s) * m[0][1];					\
-   a[1][1] = (s) * m[0][0];					\
-}
-
-/* ========================================================== */
-/* compute adjoint of matrix and scale
- *
- * Computes adjoint of matrix m, scales it by s, returning a
- */
-
-#define SCALE_ADJOINT_3X3(a,s,m)				\
-{								\
-   a[0][0] = (s) * (m[1][1] * m[2][2] - m[1][2] * m[2][1]);	\
-   a[1][0] = (s) * (m[1][2] * m[2][0] - m[1][0] * m[2][2]);	\
-   a[2][0] = (s) * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);	\
-								\
-   a[0][1] = (s) * (m[0][2] * m[2][1] - m[0][1] * m[2][2]);	\
-   a[1][1] = (s) * (m[0][0] * m[2][2] - m[0][2] * m[2][0]);	\
-   a[2][1] = (s) * (m[0][1] * m[2][0] - m[0][0] * m[2][1]);	\
-								\
-   a[0][2] = (s) * (m[0][1] * m[1][2] - m[0][2] * m[1][1]);	\
-   a[1][2] = (s) * (m[0][2] * m[1][0] - m[0][0] * m[1][2]);	\
-   a[2][2] = (s) * (m[0][0] * m[1][1] - m[0][1] * m[1][0]);	\
-}
-
-/* ========================================================== */
-/* compute adjoint of matrix and scale
- *
- * Computes adjoint of matrix m, scales it by s, returning a
- */
-
-#define SCALE_ADJOINT_4X4(a,s,m)				\
-{								\
-   int i,j;							\
-								\
-   for (i=0; i<4; i++) {					\
-      for (j=0; j<4; j++) {					\
-         COFACTOR_4X4_IJ (a[j][i], m, i, j);			\
-         a[j][i] *= s;						\
-      }								\
-   }								\
-}
-
-/* ========================================================== */
-/* inverse of matrix 
- *
- * Compute inverse of matrix a, returning determinant m and 
- * inverse b
- */
-
-#define INVERT_2X2(b,det,a)			\
-{						\
-   double tmp;					\
-   DETERMINANT_2X2 (det, a);			\
-   tmp = 1.0 / (det);				\
-   SCALE_ADJOINT_2X2 (b, tmp, a);		\
-}
-
-/* ========================================================== */
-/* inverse of matrix 
- *
- * Compute inverse of matrix a, returning determinant m and 
- * inverse b
- */
-
-#define INVERT_3X3(b,det,a)			\
-{						\
-   double tmp;					\
-   DETERMINANT_3X3 (det, a);			\
-   tmp = 1.0 / (det);				\
-   SCALE_ADJOINT_3X3 (b, tmp, a);		\
-}
-
-/* ========================================================== */
-/* inverse of matrix 
- *
- * Compute inverse of matrix a, returning determinant m and 
- * inverse b
- */
-
-#define INVERT_4X4(b,det,a)			\
-{						\
-   double tmp;					\
-   DETERMINANT_4X4 (det, a);			\
-   tmp = 1.0 / (det);				\
-   SCALE_ADJOINT_4X4 (b, tmp, a);		\
-}
-
-/* ========================================================== */
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif /* __GUTIL_VECTOR_H__ */
-/* ===================== END OF FILE ======================== */
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/Caution.tiff has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUT.nib/classes.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {save = id; saveAs = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {timerAction = id; }; 
-            CLASS = GLUTApplication; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                "_aboutMenuItem" = NSMenuItem; 
-                "_hideMenuItem" = NSMenuItem; 
-                "_quitMenuItem" = NSMenuItem; 
-            }; 
-            SUPERCLASS = NSApplication; 
-        }, 
-        {
-            ACTIONS = {toggleWindow = id; }; 
-            CLASS = GLUTClipboardController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {"_infoText" = id; "_scrollView" = id; }; 
-            SUPERCLASS = NSWindowController; 
-        }, 
-        {
-            ACTIONS = {
-                assign = id; 
-                cancel = id; 
-                inputMenu = id; 
-                invertInput = id; 
-                mouseMatrix = id; 
-                mousePreset = id; 
-                ok = id; 
-                setDefault = id; 
-            }; 
-            CLASS = GLUTPreferencesController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                assignPrompt = NSTextField; 
-                assignText = NSTextField; 
-                inputMenu = NSPopUpButton; 
-                inverted = NSButton; 
-                mbConfigMenu = NSPopUpButton; 
-                mbConfigWarningIcon = NSImageView; 
-                mbConfigWarningText = NSTextField; 
-                middleButtonMatrix = NSMatrix; 
-                rightButtonMatrix = NSMatrix; 
-            }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUT.nib/info.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>4 104 410 240 0 0 1152 848 </string>
-	<key>IBEditorPositions</key>
-	<dict>
-		<key>29</key>
-		<string>19 615 246 44 0 0 1152 848 </string>
-	</dict>
-	<key>IBFramework Version</key>
-	<string>291.0</string>
-	<key>IBGroupedObjects</key>
-	<dict/>
-	<key>IBLastGroupID</key>
-	<string>1</string>
-	<key>IBOpenObjects</key>
-	<array>
-		<integer>29</integer>
-	</array>
-	<key>IBSystem Version</key>
-	<string>6I32</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUT.nib/objects.nib has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTClipboard.nib/classes.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-{
-    IBClasses = (
-        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
-        {
-            ACTIONS = {toggleWindow = id; }; 
-            CLASS = GLUTClipboardController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {_infoText = id; _scrollView = id; }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTClipboard.nib/info.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
-<plist version="0.9">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>63 221 356 240 0 0 1600 1178 </string>
-	<key>IBFramework Version</key>
-	<string>263.2</string>
-	<key>IBSystem Version</key>
-	<string>5S41</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTClipboard.nib/objects.nib has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTPreferences.nib/classes.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {save = id; saveAs = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {
-                cancel = id; 
-                joyAssign = id; 
-                joyDevice = id; 
-                joyElement = id; 
-                joyInvert = id; 
-                launchDebugMode = id; 
-                launchGamemodeCaptureSingle = id; 
-                launchIconic = id; 
-                launchUseCurrWD = id; 
-                launchUseExtDesktop = id; 
-                launchUseMacOSCoords = id; 
-                mouseEanbleEmulation = id; 
-                mouseMiddleMenu = id; 
-                mouseRightMenu = id; 
-                ok = id; 
-                spaceAssign = id; 
-                spaceDevice = id; 
-                spaceElement = id; 
-                spaceInvert = id; 
-            }; 
-            CLASS = GLUTPreferencesController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {
-                joyAssign = NSButton; 
-                joyAssignNote = NSTextField; 
-                joyAssignWarningIcon = NSImageView; 
-                joyDeviceMenu = NSPopUpButton; 
-                joyElement = NSTextField; 
-                joyInputMenu = NSPopUpButton; 
-                joyInverted = NSButton; 
-                launchDebugMode = NSButton; 
-                launchFadeTime = NSTextField; 
-                launchGamemodeCaptureSingle = NSButton; 
-                launchIconic = NSButton; 
-                launchInitHeight = NSTextField; 
-                launchInitWidth = NSTextField; 
-                launchInitX = NSTextField; 
-                launchInitY = NSTextField; 
-                launchMenuIdle = NSTextField; 
-                launchSyncToVBL = NSButton; 
-                launchUseCurrWD = NSButton; 
-                launchUseExtendedDesktop = NSButton; 
-                launchUseMacOSXCoords = NSButton; 
-                mouseAssignWarningIcon = NSImageView; 
-                mouseAssignWarningText = NSTextField; 
-                mouseDetected = NSTextField; 
-                mouseEmulation = NSButton; 
-                mouseMiddleConfigMenu = NSPopUpButton; 
-                mouseRightConfigMenu = NSPopUpButton; 
-                prefsTabView = NSTabView; 
-                spaceAssign = NSButton; 
-                spaceAssignNote = NSTextField; 
-                spaceAssignWarningIcon = NSImageView; 
-                spaceDeviceMenu = NSPopUpButton; 
-                spaceElement = NSTextField; 
-                spaceInputMenu = NSPopUpButton; 
-                spaceInverted = NSButton; 
-            }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTPreferences.nib/info.nib	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>16 329 410 240 0 0 1920 1178 </string>
-	<key>IBFramework Version</key>
-	<string>439.0</string>
-	<key>IBOpenObjects</key>
-	<array>
-		<integer>205</integer>
-	</array>
-	<key>IBSystem Version</key>
-	<string>8G32</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTPreferences.nib/objects.nib has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/GLUTUI.strings has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings has changed
--- a/bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/Info.plist	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>GLUT</string>
-	<key>CFBundleGetInfoString</key>
-	<string>3.4.0, Copyright (c) 2001-2008 Apple Inc., All Rights Reserved</string>
-	<key>CFBundleIdentifier</key>
-	<string>com.apple.glut</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundlePackageType</key>
-	<string>FMWK</string>
-	<key>CFBundleShortVersionString</key>
-	<string>3.4.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>GLUT-3.4.0</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/blankCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/bottomCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/bottomleftCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/bottomrightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/crossCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/cycleCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/destroyCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/fingerCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/helpCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/leftCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/leftRightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/rightArrowCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/rightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/sprayCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/topCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/topleftCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/toprightCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/upDownCursor.tiff has changed
Binary file bin/MelodyTriangle.app/Contents/Frameworks/GLUT.framework/Versions/Current/Resources/waitCursor.tiff has changed
--- a/bin/MelodyTriangle.app/Contents/Info.plist	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>BuildMachineOSBuild</key>
-	<string>10K549</string>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>MelodyTriangle</string>
-	<key>CFBundleIdentifier</key>
-	<string>com.yourcompany.openFrameworks</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1.0</string>
-	<key>DTCompiler</key>
-	<string></string>
-	<key>DTPlatformBuild</key>
-	<string>10M2518</string>
-	<key>DTPlatformVersion</key>
-	<string>PG</string>
-	<key>DTSDKBuild</key>
-	<string>10K549</string>
-	<key>DTSDKName</key>
-	<string></string>
-	<key>DTXcode</key>
-	<string>0400</string>
-	<key>DTXcodeBuild</key>
-	<string>10M2518</string>
-</dict>
-</plist>
Binary file bin/MelodyTriangle.app/Contents/MacOS/MelodyTriangle has changed
Binary file bin/MelodyTriangle.app/Contents/MacOS/libfmodex.dylib has changed
--- a/bin/MelodyTriangle.app/Contents/PkgInfo	Wed Feb 01 16:17:12 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-APPL????
\ No newline at end of file
Binary file release/MelodyTriangle.app.tar.gz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/screenui.sh	Wed Feb 01 16:17:32 2012 +0000
@@ -0,0 +1,2 @@
+#!/bin/sh
+bin/MelodyTriangle.app/Contents/MacOS/MelodyTriangle localhost 7770 "$@" 
--- a/src/Voice.cpp	Wed Feb 01 16:17:12 2012 +0000
+++ b/src/Voice.cpp	Wed Feb 01 16:17:32 2012 +0000
@@ -9,42 +9,49 @@
 
 #include "Voice.h"
 
+inline static double min(double x,double y) { return (x<y) ? x : y; }
+
 Voice::Voice(int id, int x, int y){
 	this->id=id;
 	posx=x;
 	posy=y;
 	isActive=true;
-	radius=15;
+	radius=12;
 	inTriangle=false;
 	octave=0;
 	highlight=false;
+	amplitude=0.6;
+	status=clear;
 }
 
-Voice::Voice(){}
-
 void Voice::draw(){
-	ofSetColor(255,0,0);
+	int r,g,b;
+	switch (status) {
+		case clear:   r=1; g=0; b=0; break;
+		default:      r=1; g=1; b=0; break;
+//		case pending: r=1; g=1; b=0; break;
+//		case waiting: r=1; g=0; b=0; break;
+//		case moved:   r=1; g=0; b=1; break;
+//		default:      r=0; g=1; b=0;
+	}
 	
-	if (isActive){
-		
-		ofFill();
-	}else {
+	if (isActive) { r=2*r; g=2*g; b=2*b; }
+	ofSetColor(100*r,60*g,60*b);
+	ofFill();
+	ofCircle(posx, posy, radius);
+	//ofNoFill();
+	//ofCircle(posx, posy, radius);
+	
+	if (highlight) {
+		ofSetColor(230, 230, 230);
 		ofNoFill();
-	}
-	ofCircle(posx, posy, radius);
-	if (highlight){
+		ofCircle(posx, posy, radius);
+	} else {
 		ofNoFill();
-		ofSetColor(255, 255, 255);
 		ofCircle(posx, posy, radius);
 	}
 }
 
-bool Voice::isInVoice(int x, int y){
-	if (ofDist(x, y, posx, posy)<=radius){
-		return true;
-	}else {
-		return false;
-	}
+double Voice::louder()  { return amplitude=min(1,amplitude*1.125); }
+double Voice::quieter() { return amplitude/=1.125; }
 
-}
-
--- a/src/Voice.h	Wed Feb 01 16:17:12 2012 +0000
+++ b/src/Voice.h	Wed Feb 01 16:17:32 2012 +0000
@@ -9,11 +9,20 @@
 #include "ofMain.h"
 class Voice  {
 public:
+	Voice(int id, int x, int y);
+	Voice() {};
 	
-	void draw();
-	Voice(int id, int x, int y);
-	Voice();
-	bool isInVoice(int x, int y);
+	enum status {
+		clear,
+		pending,
+		waiting,
+		moved
+	};
+	
+	bool isInVoice(int x, int y) { return (ofDist(x, y, posx, posy)<=radius); };
+	double louder();
+	double quieter();
+	void   draw();
 	
 	int id;
 	int posx,posy;
@@ -22,6 +31,6 @@
 	int radius;
 	int octave;
 	bool highlight;
-	
-	
+	double amplitude;
+	enum status status;
 };
--- a/src/main.cpp	Wed Feb 01 16:17:12 2012 +0000
+++ b/src/main.cpp	Wed Feb 01 16:17:32 2012 +0000
@@ -5,7 +5,7 @@
 #define HOST "localhost"
 #define PORT 7770
 #define NUMVOICES 3
-#define RECEIVEPORT 1234
+#define RECEIVEPORT 7771
 
 //========================================================================
 int main(int argc, const char **argv ){
--- a/src/melodyTriangle.cpp	Wed Feb 01 16:17:12 2012 +0000
+++ b/src/melodyTriangle.cpp	Wed Feb 01 16:17:32 2012 +0000
@@ -1,6 +1,7 @@
 #include "melodyTriangle.h"
 #include <GLUT/GLUT.h> 
 
+#define BUFFER_ZONE 50 // have to drag this far to snap out of triange.
 /*
  /birth id
  /death id
@@ -19,19 +20,31 @@
 	//voices=*Voice[numVoices];
 	sender.setup( host,port );
 	receiver.setup( receivePort );
-
+	
+	{
+		ofxOscMessage m;
+		m.setAddress( "/reply_to" );
+		m.addIntArg( receivePort );
+		sender.sendMessage( m );
+		printf("sent /reply_to %i\n",receivePort);
+	}
 }
 
 //--------------------------------------------------------------
 void melodyTriangle::setup(){
-	//voices = new Voice[NUMVOICES];
-	
 	ofSetCircleResolution(100);
 	ofBackground(0,0,0);
 	ofSetWindowTitle("Melody Triangle");
+	// if vertical sync is off, we can go a bit fast... 
+	// this caps the framerate at 40fps.
+	ofSetFrameRate(40); 
+	ofEnableSmoothing();
+
+	// Set up triange coordinates. 
+	// NB. whatever happens here, the triangle must be
+	// isosceles and left-right symmetric around x=x1.
+	// Otherwise the clipping won't work
 	triangleHeight=ofGetHeight()*0.75;
-	ofSetFrameRate(40); // if vertical sync is off, we can go a bit fast... this caps the framerate at 60fps.
-	ofEnableSmoothing();
 	x1=ofGetWidth()/2;
 	y1=(ofGetHeight()-triangleHeight)/2;
 	x2=ofGetWidth()/2-triangleHeight/sqrt(3);
@@ -39,6 +52,18 @@
 	x3=ofGetWidth()/2+triangleHeight/sqrt(3);
 	y3=y2;
 	
+	// used for clipping
+	DX13=x3-x1; DY13=y3-y1;
+	SQLEN13=DX13*DX13+DY13*DY13;
+	
+	sendCalibrate();
+	for (int i=0;i<numVoices;i++){
+		voices[i]=new Voice(i+1+voiceIdOffset,x2+15,y1+20+i*30);
+	}
+	voiceGrabbed=-1;
+}
+
+void melodyTriangle::sendCalibrate(){
 	ofxOscMessage m;
 	m.setAddress( "/calibrate" );
 	m.addIntArg( x1 );
@@ -49,12 +74,44 @@
 	m.addIntArg( y3 );
 	sender.sendMessage( m );
 	printf("sent /calibrate %i %i %i %i %i %i\n",x1,y1,x2,y2,x3,y3);
-	
-	for (int i=0;i<numVoices;i++){
-		
-		voices[i]=new Voice(i+1+voiceIdOffset,x2+15,y1+20+i*30);
-	}
-	voiceGrabbed=-1;
+}
+
+void melodyTriangle::sendPeriod(int id, int num, int den){
+	ofxOscMessage m;
+	m.setAddress("/period");
+	m.addIntArg(id);
+	m.addIntArg(num);
+	m.addIntArg(den);
+	sender.sendMessage(m);
+	printf("sent /period %i %i %i\n",id,num,den);
+}
+
+void melodyTriangle::sendShift(int id, int num, int den){
+	ofxOscMessage m;
+	m.setAddress("/shift");
+	m.addIntArg(id);
+	m.addIntArg(num);
+	m.addIntArg(den);
+	sender.sendMessage(m);
+	printf("sent /shift %i %i %i\n",id,num,den);
+}
+
+void melodyTriangle::sendOctave(int id, int oct){
+	ofxOscMessage m;
+	m.setAddress("/octave");
+	m.addIntArg(id);
+	m.addIntArg(oct);
+	sender.sendMessage(m);
+	printf("sent /octave %i %i\n",id,oct);
+}
+
+void melodyTriangle::sendAmplitude(int id, float amp){
+	ofxOscMessage m;
+	m.setAddress("/amplitude");
+	m.addIntArg(id);
+	m.addFloatArg(amp);
+	sender.sendMessage(m);
+	printf("sent /amplitude %i %1.3f\n",id,amp);
 }
 
 //--------------------------------------------------------------
@@ -64,52 +121,81 @@
 		// get the next message
 		ofxOscMessage m;
 		receiver.getNextMessage( &m );
-		string msg_string;
-		msg_string = m.getAddress();
-		msg_string += ": ";
-		for ( int i=0; i<m.getNumArgs(); i++ )
-		{
-			// get the argument type
-			msg_string += m.getArgTypeName( i );
-			msg_string += ":";
-			// display the argument - make sure we get the right type
-			if( m.getArgType( i ) == OFXOSC_TYPE_INT32 )
-				msg_string += ofToString( m.getArgAsInt32( i ) );
-			else if( m.getArgType( i ) == OFXOSC_TYPE_FLOAT )
-				msg_string += ofToString( m.getArgAsFloat( i ) );
-			else if( m.getArgType( i ) == OFXOSC_TYPE_STRING )
-				msg_string += m.getArgAsString( i );
-			else
-				msg_string += "unknown";
+		if (m.getAddress()=="/notify") {
+			int id=m.getArgAsInt32(0)-1;
+			string st=m.getArgAsString(1);
+			
+			if (id>=0 && id<numVoices) {
+				Voice *v=voices[id];
+
+				if (st=="received") v->status=Voice::clear;
+				else if (st=="pending") v->status=Voice::pending;
+				else if (st=="requested") v->status=Voice::waiting;
+				else cout << "** unrecognised voice status: " << st << ".\n";
+			} else {
+				cout << "** voice id "<<id<<" out of range.\n";
+			}
+		} else {
+			string msg_string;
+			msg_string = m.getAddress();
+			msg_string += ": ";
+			for ( int i=0; i<m.getNumArgs(); i++ )
+			{
+				// get the argument type
+				msg_string += m.getArgTypeName( i );
+				msg_string += ":";
+				// display the argument - make sure we get the right type
+				if( m.getArgType( i ) == OFXOSC_TYPE_INT32 )
+					msg_string += ofToString( m.getArgAsInt32( i ) );
+				else if( m.getArgType( i ) == OFXOSC_TYPE_FLOAT )
+					msg_string += ofToString( m.getArgAsFloat( i ) );
+				else if( m.getArgType( i ) == OFXOSC_TYPE_STRING )
+					msg_string += m.getArgAsString( i );
+				else
+					msg_string += "unknown";
+			}
+			cout<< msg_string << "\n";
 		}
-		cout<< msg_string << "\n";
-		
 	}
 }
 
-bool melodyTriangle::isInTriangle(int x, int y){
-	if (x>x2 && x<x3 && y>y1 && y<y2){
-		//printf("in bounding box\n");
-		float dx=abs(x-x1);
-		float dy=abs(y-y1);
-		//printf("tan(30)- dx/dy: %f\n",tan(30*PI/180)-dx/dy);
+bool melodyTriangle::clipToTriangle(int *x, int *y) {
+	bool clipped;
+	
+	if (*y>y2) { // off the bottom
+		clipped=true;
+		*y=y2;
+		if (*x<x2) *x=x2; 
+		else if (*x>x3) *x=x3;
+	} else { // have to be a bit cleverer
+		bool reflect=false;
+		if (*x<x1) { // work in reflected coordinates
+			reflect=true;
+			*x=2*x1-*x;
+		}
 		
-		if (dx/dy < tan(30*PI/180)){
-			
-			//printf("in triangle \n");
-			return true;
-		}else {
-			//printf("not in triangle \n");
-			return false;
+		int dx=(*x-x1), dy=(*y-y1); // deltas from top
+		if (dx*DY13 > dy*DX13) {
+			// (x,y) must be somewhere right of triangle now
+			clipped=true;
+			int dp=dx*DX13 + dy*DY13;
+			if (dp<0) { *x=x1; *y=y1; } // off the top
+			else if (dp>SQLEN13) { *x=x3; *y=y3; } // off the bottom right
+			else { // project onto right edge
+				*x=x1+dp*DX13/SQLEN13;
+				*y=y1+dp*DY13/SQLEN13;
+			}
+		} else {
+			clipped=false;
 		}
 
-	}else{
-		//printf("not in bounding box \n");
-		return false;
+		if (reflect) *x=2*x1 - *x; // reflect back if necessary
 	}
+	return clipped;
 }
 
-void melodyTriangle::sendStatus(Voice v){
+
+void melodyTriangle::sendPosition(Voice v){
 	
 	ofxOscMessage m;
 	///track id x y left right top bottom area  
@@ -124,81 +210,87 @@
 
 //--------------------------------------------------------------
 void melodyTriangle::draw(){
+	bool constrained=false;
+	bool sendStart=false;
 
-	
-	//let's draw our triangle
-	ofSetColor(0,0,255);
-	
-	ofFill();		
-	ofTriangle(x1, y1, x2, y2, x3, y3);
-	bool sendStart=false;
 	if (voiceGrabbed!=-1){
-		if (mouseX!=(*voices[voiceGrabbed]).posx || mouseY!=(*voices[voiceGrabbed]).posy){
-			//(*voices[voiceGrabbed]).posx=mouseX;
-			//(*voices[voiceGrabbed]).posy=mouseY;
-			if ((*voices[voiceGrabbed]).inTriangle && !isInTriangle(mouseX,mouseY)){
-			    ///death id
+		Voice *vg=voices[voiceGrabbed];
+		if (mouseX!=vg->posx || mouseY!=vg->posy){
+			int clipx=mouseX, clipy=mouseY;
+			bool clipped=clipToTriangle(&clipx,&clipy);
+			
+			if (vg->inTriangle) {
 				
-				if (ofDist((*voices[voiceGrabbed]).posx, (*voices[voiceGrabbed]).posy, mouseX, mouseY) > (*voices[voiceGrabbed]).radius*2){ 
+				if (clipped) {
+					// check how far we clipped
+					if (ofDist(clipx, clipy, mouseX, mouseY) > BUFFER_ZONE) { 
+						// if far enough, we pop out of triangle and send
+						// /death <id>
+						ofxOscMessage m;
+						m.setAddress( "/death" );
+						m.addIntArg( vg->id );
+						sender.sendMessage( m );
 				
+						printf("sent /death %i \n",vg->id);
+						vg->posx=mouseX;
+						vg->posy=mouseY;
+						vg->inTriangle=false;
+						vg->status=Voice::clear;
+					} else {
+						// otherwise, we move to clipped point
+						constrained=true;
+						vg->posx=clipx;
+						vg->posy=clipy;
+					}
+				} else { // not clipped; normal move
+					vg->posx=mouseX;
+					vg->posy=mouseY;
+				}
+			} else { // token was outside triangle
+				vg->posx=mouseX;
+				vg->posy=mouseY;
+				if (!clipped){ // ie mouse now in triangle
+					//birth id
 					
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/death" );
-				m.addIntArg( (*voices[voiceGrabbed]).id );
-				sender.sendMessage( m );
-				
-				printf("sent /death %i \n",(*voices[voiceGrabbed]).id);
-				(*voices[voiceGrabbed]).posx=mouseX;
-				(*voices[voiceGrabbed]).posy=mouseY;
-
-				} else {
-					//printf("e");
-					//On Edge
-				}
-
-			}else{
-				(*voices[voiceGrabbed]).posx=mouseX;
-				(*voices[voiceGrabbed]).posy=mouseY;
-				//(*voices[voiceGrabbed]).posx=(*voices[voiceGrabbed]).posx*0.9+mouseX*0.1;
-				//(*voices[voiceGrabbed]).posy=(*voices[voiceGrabbed]).posy*0.9+mouseY*0.1;
-				
-				
-			}
-			if (!(*voices[voiceGrabbed]).inTriangle && isInTriangle(mouseX,mouseY)){
-				//birth id
-				
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/birth" );
-				m.addIntArg( (*voices[voiceGrabbed]).id );
-				sender.sendMessage( m );
-				
-				printf("sent /birth %i \n",(*voices[voiceGrabbed]).id);
-				sendStart=true;
-			}
-			
-			
-			//(*voices[voiceGrabbed]).inTriangle = isInTriangle(mouseX,mouseY);
-			
-			(*voices[voiceGrabbed]).inTriangle = isInTriangle((*voices[voiceGrabbed]).posx,(*voices[voiceGrabbed]).posy);
-			
-			if ((*voices[voiceGrabbed]).inTriangle){
-				sendStatus(*voices[voiceGrabbed]);
-				if (sendStart){
-					if ((*voices[voiceGrabbed]).isActive){
-						ofxOscMessage m;
-						///track id x y left right top bottom area  
-						m.setAddress( "/start" );
-						m.addIntArg( (*voices[voiceGrabbed]).id );
-						sender.sendMessage( m );
-						printf("sent /start %i \n",(*voices[voiceGrabbed]).id);
-					}
+					ofxOscMessage m;
+					m.setAddress( "/birth" );
+					m.addIntArg( vg->id );
+					sender.sendMessage( m );
+					
+					printf("sent /birth %i \n",vg->id);
+					sendOctave(vg->id,vg->octave);
+					sendAmplitude(vg->id,vg->amplitude);
+					sendStart=true;
+					vg->inTriangle=true;
 				}
 			}
 			
+			if (vg->inTriangle){
+				sendPosition(*vg);
+				vg->status=Voice::moved;
+				if (sendStart && vg->isActive){
+					ofxOscMessage m;
+					///track id x y left right top bottom area  
+					m.setAddress( "/start" );
+					m.addIntArg( vg->id );
+					sender.sendMessage( m );
+					printf("sent /start %i \n",vg->id);
+				}
+			}
 		}
 	};
+
+	//let's draw our triangle
+	ofSetLineWidth(2);
+	ofSetColor(80,80,80);
+	ofFill();		
+	ofTriangle(x1, y1, x2, y2, x3, y3);
+	if (constrained) ofSetColor(255,96,96);
+
+	// draw smooth edge, brighter if a token is constrained
+	ofNoFill();		
+	ofTriangle(x1, y1, x2, y2, x3, y3);
+	
 	for (int i=0; i<numVoices; i++){
 		(*voices[i]).draw();
 	}
@@ -206,210 +298,66 @@
 	
 }
 
-
 //--------------------------------------------------------------
 void melodyTriangle::keyPressed  (int key){
 	//printf("key %i",key);
 	if (enableKeys){
-	if (key == 'a'){
-		for (int i=0; i<numVoices; i++){
-				if ((*voices[i]).isInVoice(mouseX,mouseY)){
-					
-					(*voices[i]).isActive=!(*voices[i]).isActive;
-					///start id
-					///stop id
-					if ((*voices[i]).isActive){
-						ofxOscMessage m;
-						///track id x y left right top bottom area  
-						m.setAddress( "/start" );
-						m.addIntArg( (*voices[i]).id );
-						sender.sendMessage( m );
-						printf("sent /start %i \n",(*voices[i]).id);
-					}else {
-						ofxOscMessage m;
-						///track id x y left right top bottom area  
-						m.setAddress( "/stop" );
-						m.addIntArg( (*voices[i]).id );
-						sender.sendMessage( m );
-						printf("sent /stop %i \n",(*voices[i]).id);
-						
+		switch (key) {
+			case ' ': {
+				ofxOscMessage m;
+				m.setAddress( "/marker" );
+				sender.sendMessage(m);
+				printf("sent /marker\n");
+				break;
+			}
+				
+			case '1':
+			case '2':
+			case '3':
+			case '4': {
+				int tempo=30 + 30*(key-'1');
+				ofxOscMessage m;
+				m.setAddress( "/tempo" );
+				m.addIntArg(tempo);
+				sender.sendMessage( m );
+				printf("sent /tempo %d\n",tempo);
+			}
+				break;
+				
+			case 'c': sendCalibrate(); break;
+
+			default: { // otherwise, send key to all active voices
+				for (int i=0; i<numVoices; i++){
+					if (voices[i]->isInVoice(mouseX,mouseY)){
+						Voice *v=voices[i];
+						switch (key) {
+							case 'a': {
+								ofxOscMessage m;
+								const char *addr = v->isActive ? "/stop" : "/start";
+								v->isActive=!v->isActive;
+								m.setAddress(addr);
+								m.addIntArg(v->id );
+								sender.sendMessage( m );
+								printf("sent %s %i \n",addr,v->id);
+								break;
+							}
+							case OF_KEY_LEFT:  sendShift(v->id,-1,2); break;
+							case OF_KEY_RIGHT: sendShift(v->id,1,2); break;
+							case OF_KEY_UP:    sendPeriod(v->id,1,2); break;
+							case OF_KEY_DOWN:  sendPeriod(v->id,2,1); break;
+							case '.': sendPeriod(v->id,1,3); break;
+							case ',': sendPeriod(v->id,3,1); break;
+							case '+': sendOctave(v->id, ++v->octave); break;
+							case '-': sendOctave(v->id, --v->octave); break;
+							case '*': sendAmplitude(v->id, v->louder()); break;
+							case '/': sendAmplitude(v->id, v->quieter()); break;
+							default:  printf("unrecognised key: %d.\n",key);
+						}
 					}
-
 				}
-		}
-	}
-	if (key == OF_KEY_UP){
-		for (int i=0; i<numVoices; i++){
-			if ((*voices[i]).isInVoice(mouseX,mouseY)){
-				
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/period" );
-				m.addIntArg( (*voices[i]).id );
-				m.addIntArg(1);
-				m.addIntArg(2);
-				sender.sendMessage( m );
-				printf("sent /period %i %i %i\n",(*voices[i]).id,1,2);
-				
 			}
 		}
 	}
-	if (key == OF_KEY_DOWN){
-		for (int i=0; i<numVoices; i++){
-			if ((*voices[i]).isInVoice(mouseX,mouseY)){
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/period" );
-				m.addIntArg( (*voices[i]).id );
-				m.addIntArg(2);
-				m.addIntArg(1);
-				sender.sendMessage( m );
-				printf("sent /period %i %i %i\n",(*voices[i]).id,2,1);
-			}
-		}
-	}
-	
-	if (key == '.'){
-		for (int i=0; i<numVoices; i++){
-			if ((*voices[i]).isInVoice(mouseX,mouseY)){
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/period" );
-				m.addIntArg( (*voices[i]).id );
-				m.addIntArg(1);
-				m.addIntArg(3);
-				sender.sendMessage( m );
-				printf("sent /period %i %i %i\n",(*voices[i]).id,1,3);
-			}
-		}
-		
-	}
-	if (key == ','){
-		for (int i=0; i<numVoices; i++){
-			if ((*voices[i]).isInVoice(mouseX,mouseY)){
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/period" );
-				m.addIntArg( (*voices[i]).id );
-				m.addIntArg(3);
-				m.addIntArg(1);
-				sender.sendMessage( m );
-				printf("sent /period %i %i %i\n",(*voices[i]).id,3,1);
-			}
-		}
-		
-	}
-	if (key == OF_KEY_LEFT){
-		for (int i=0; i<numVoices; i++){
-			if ((*voices[i]).isInVoice(mouseX,mouseY)){
-				
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/shift" );
-				m.addIntArg( (*voices[i]).id );
-				m.addIntArg(-1);
-				m.addIntArg(2);
-				sender.sendMessage( m );
-				printf("sent /shift %i %i %i\n",(*voices[i]).id,-1,2);
-				
-			}
-		}
-	}
-	if (key == OF_KEY_RIGHT){
-		for (int i=0; i<numVoices; i++){
-			if ((*voices[i]).isInVoice(mouseX,mouseY)){
-				
-					
-					ofxOscMessage m;
-					///track id x y left right top bottom area  
-					m.setAddress( "/shift" );
-					m.addIntArg( (*voices[i]).id );
-					m.addIntArg(1);
-					m.addIntArg(2);
-					sender.sendMessage( m );
-					printf("sent /shift %i %i %i\n",(*voices[i]).id,1,2);
-				
-			}
-		}
-	}
-	if (key == '1'){
-		
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/tempo" );
-				m.addIntArg(30);
-				sender.sendMessage( m );
-				printf("sent /tempo 30\n");
-		
-	}
-	if (key == '2'){
-		ofxOscMessage m;
-		///track id x y left right top bottom area  
-		m.setAddress( "/tempo" );
-		m.addIntArg(60);
-		sender.sendMessage( m );
-		printf("sent /tempo 60\n");
-	}
-	if (key == '3'){
-		ofxOscMessage m;
-		///track id x y left right top bottom area  
-		m.setAddress( "/tempo" );
-		m.addIntArg(90);
-		sender.sendMessage( m );
-		printf("sent /tempo 90\n");
-	}
-	if (key == '4'){
-		ofxOscMessage m;
-		///track id x y left right top bottom area  
-		m.setAddress( "/tempo" );
-		m.addIntArg(120);
-		sender.sendMessage( m );
-		printf("sent /tempo 120\n");
-	}
-	if (key == '+'){
-		for (int i=0; i<numVoices; i++){
-			if ((*voices[i]).isInVoice(mouseX,mouseY)){
-				
-				(*voices[i]).octave++;
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/octave" );
-				m.addIntArg( (*voices[i]).id );
-				m.addIntArg((*voices[i]).octave);
-				
-				sender.sendMessage( m );
-				printf("sent /octave %i %i \n",(*voices[i]).id,(*voices[i]).octave);
-				
-			}
-		}
-	}
-	
-	if (key == '-'){
-		for (int i=0; i<numVoices; i++){
-			if ((*voices[i]).isInVoice(mouseX,mouseY)){
-				
-				(*voices[i]).octave--;
-				ofxOscMessage m;
-				///track id x y left right top bottom area  
-				m.setAddress( "/octave" );
-				m.addIntArg( (*voices[i]).id );
-				m.addIntArg((*voices[i]).octave);
-				
-				sender.sendMessage( m );
-				printf("sent /octave %i %i \n",(*voices[i]).id,(*voices[i]).octave);
-				
-			}
-		}
-	}
-	}
-	if (key == ' '){
-		
-		ofxOscMessage m;
-		///track id x y left right top bottom area  
-		m.setAddress( "/marker" );
-		sender.sendMessage(m);
-		printf("sent /marker\n");
-	}
 }
 
 //--------------------------------------------------------------
@@ -420,15 +368,8 @@
 //--------------------------------------------------------------
 void melodyTriangle::mouseMoved(int x, int y ){
 	for (int i=0; i<numVoices;i++){
-		if ((*voices[i]).isInVoice(x,y)){
-			(*voices[i]).highlight=true;
-		}else {
-			(*voices[i]).highlight=false;
-		}
-
+		voices[i]->highlight = voices[i]->isInVoice(x,y);
 	}
-	
-	
 }
 
 //--------------------------------------------------------------
@@ -440,7 +381,7 @@
 void melodyTriangle::mousePressed(int x, int y, int button){
 	
 	for (int i=0; i<numVoices;i++){
-		if ((*voices[i]).isInVoice(x,y)){
+		if (voices[i]->isInVoice(x,y)){
 			voiceGrabbed=i;
 			//printf("grabbed %i",voiceGrabbed);
 		}else{
--- a/src/melodyTriangle.h	Wed Feb 01 16:17:12 2012 +0000
+++ b/src/melodyTriangle.h	Wed Feb 01 16:17:32 2012 +0000
@@ -30,17 +30,23 @@
 		bool enableKeys;
 		float 	counter;
 		bool	bSmooth;
-		//Voice *voices[NUMVOICES];
 		Voice *voices[10];
 	
 		int x1,y1,x2,y2,x3,y3;//Triangle Coords
 		int triangleHeight;
 		int voiceGrabbed;
-	    void sendStatus(Voice v);
-	    bool isInTriangle(int x, int y);
+	    void sendPosition(Voice v);
+		void sendCalibrate();
+		void sendPeriod(int id, int num, int den);
+		void sendShift(int id, int num, int den);
+		void sendOctave(int id, int oct);
+		void sendAmplitude(int id, float amp);
 		
 	
 	private:
 		ofxOscSender sender;
 		ofxOscReceiver	receiver;
+		int DX13, DY13, SQLEN13;
+	
+		bool clipToTriangle(int *cx, int *cy);
 };