diff --git a/VisualStudio/OpenSceneGraph.dsw b/VisualStudio/OpenSceneGraph.dsw index a2366ff50..c603cd4f4 100644 --- a/VisualStudio/OpenSceneGraph.dsw +++ b/VisualStudio/OpenSceneGraph.dsw @@ -1967,6 +1967,9 @@ Package=<4> Begin Project Dependency Project_Dep_Name Core osgUtil End Project Dependency + Begin Project Dependency + Project_Dep_Name Core osgShadow + End Project Dependency }}} ############################################################################### diff --git a/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj b/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj index a378acbf3..e8c76f7bb 100644 --- a/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj +++ b/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj @@ -29,6 +29,7 @@ 006CEA380921B08000985402 /* PBXTargetDependency */, 00EF4FCB06CB1775008ACEFF /* PBXTargetDependency */, 00EF4FCD06CB1775008ACEFF /* PBXTargetDependency */, + 00F2DF100B852D1300345D8E /* PBXTargetDependency */, 00EF4FCF06CB1775008ACEFF /* PBXTargetDependency */, 00EF4FD106CB1775008ACEFF /* PBXTargetDependency */, 00EF4FD306CB1775008ACEFF /* PBXTargetDependency */, @@ -46,6 +47,7 @@ 00EF4FE306CB1775008ACEFF /* PBXTargetDependency */, 00A14F93084E6704000150AD /* PBXTargetDependency */, 00EF4FE506CB1775008ACEFF /* PBXTargetDependency */, + 00F2DF120B852D1300345D8E /* PBXTargetDependency */, 00EF4FE706CB1775008ACEFF /* PBXTargetDependency */, 00F23A1707678DB800528CDD /* PBXTargetDependency */, 006CEA3C0921B08000985402 /* PBXTargetDependency */, @@ -69,9 +71,11 @@ 00EF500306CB1775008ACEFF /* PBXTargetDependency */, 00EF500506CB1775008ACEFF /* PBXTargetDependency */, 006CEA400921B08000985402 /* PBXTargetDependency */, + 00F2DF160B852DFC00345D8E /* PBXTargetDependency */, 00EF500706CB1775008ACEFF /* PBXTargetDependency */, 00EF500906CB1775008ACEFF /* PBXTargetDependency */, 00A14D8B084E5D95000150AD /* PBXTargetDependency */, + 00F2DF140B852D1300345D8E /* PBXTargetDependency */, 00C59E150B0941EF00E9BCA1 /* PBXTargetDependency */, 00EF500F06CB1775008ACEFF /* PBXTargetDependency */, 006CEA420921B08000985402 /* PBXTargetDependency */, @@ -105,6 +109,7 @@ 001D0668065AB60D003310BF /* PBXTargetDependency */, 004E4DE30A5208BD00EC8521 /* PBXTargetDependency */, 001D066C065AB60D003310BF /* PBXTargetDependency */, + 00F2DEFE0B852AAA00345D8E /* PBXTargetDependency */, 001D066E065AB60D003310BF /* PBXTargetDependency */, 00A150DF084E6B76000150AD /* PBXTargetDependency */, 001D0670065AB60D003310BF /* PBXTargetDependency */, @@ -2074,6 +2079,8 @@ 00F2394B0767784200528CDD /* osgplanets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00F239480767784100528CDD /* osgplanets.cpp */; }; 00F2394C0767791D00528CDD /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB77AAFE841565C02AAC07 /* Carbon.framework */; }; 00F23A1A07678E7600528CDD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1182CF05D64A5900EB53E5 /* OpenGL.framework */; }; + 00F2DBA90B83BD1100345D8E /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 00F2DBA70B83BD0F00345D8E /* Localizable.strings */; }; + 00F2DF4F0B8536C400345D8E /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 00F7B0EC081F41B200CF8D98 /* osgforest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0007BA2106C199B000C884E1 /* osgforest.cpp */; }; 00FB206D0B013D200052DD79 /* IntersectionVisitor in Headers */ = {isa = PBXBuildFile; fileRef = 00FB206C0B013D200052DD79 /* IntersectionVisitor */; settings = {ATTRIBUTES = (Public, ); }; }; 00FB20780B0141180052DD79 /* IntersectionVisitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00FB20770B0141170052DD79 /* IntersectionVisitor.cpp */; }; @@ -4610,6 +4617,41 @@ remoteGlobalIDString = 00F2392A076776E700528CDD; remoteInfo = osgplanets; }; + 00F2DEFD0B852AAA00345D8E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 001DFD73065A9908003310BF /* osgdb_x */; + remoteInfo = osgdb_x; + }; + 00F2DF0F0B852D1300345D8E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 006E24600AC0D66700FBB48F /* osgfadetext */; + remoteInfo = osgfadetext; + }; + 00F2DF110B852D1300345D8E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D47A06F80B83413800E19024 /* osgmanipulator */; + remoteInfo = osgmanipulator; + }; + 00F2DF130B852D1300345D8E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 00C59D480B092D3B00E9BCA1 /* osgsimpleviewerCocoa */; + remoteInfo = osgsimpleviewerCocoa; + }; + 00F2DF150B852DFC00345D8E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D4C6F29C0B8317AB0052E667 /* osgshadow */; + remoteInfo = osgshadow; + }; 00FB20D20B015CF10052DD79 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; @@ -4747,7 +4789,7 @@ isa = PBXContainerItemProxy; containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; proxyType = 1; - remoteGlobalIDString = D47A06550B833F6E00E19024 /* osgManipulator */; + remoteGlobalIDString = D47A06550B833F6E00E19024; remoteInfo = osgManipulator; }; D48EC75B0B4FBDD8000E05A4 /* PBXContainerItemProxy */ = { @@ -5707,7 +5749,7 @@ 006E24450AC0D44700FBB48F /* View */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; path = View; sourceTree = ""; }; 006E24500AC0D58F00FBB48F /* FadeText */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = FadeText; path = ../../include/osgText/FadeText; sourceTree = SOURCE_ROOT; }; 006E245E0AC0D64400FBB48F /* FadeText.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = FadeText.cpp; path = ../../src/osgText/FadeText.cpp; sourceTree = SOURCE_ROOT; }; - 006E24720AC0D66700FBB48F /* osgfadetext.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = osgfadetext.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 006E24720AC0D66700FBB48F /* osgfadetext.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgfadetext.app; sourceTree = BUILT_PRODUCTS_DIR; }; 006E24860AC0D7BB00FBB48F /* osgfadetext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgfadetext.cpp; sourceTree = ""; }; 006E25450AC107DB00FBB48F /* View.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = View.cpp; sourceTree = ""; }; 00794FAC09D351FC003FC8A1 /* observer_ptr */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = observer_ptr; path = ../../include/osg/observer_ptr; sourceTree = SOURCE_ROOT; }; @@ -5926,7 +5968,7 @@ 00A14C84084E573B000150AD /* OrientationConverter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = OrientationConverter.cpp; path = ../../applications/osgconv/OrientationConverter.cpp; sourceTree = SOURCE_ROOT; }; 00A14C85084E573C000150AD /* OrientationConverter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = OrientationConverter.h; path = ../../applications/osgconv/OrientationConverter.h; sourceTree = SOURCE_ROOT; }; 00A14C86084E573C000150AD /* osgconv.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = osgconv.cpp; path = ../../applications/osgconv/osgconv.cpp; sourceTree = SOURCE_ROOT; }; - 00A14CAD084E580E000150AD /* osgdem.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = osgdem.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 00A14CAD084E580E000150AD /* osgdem.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgdem.app; sourceTree = BUILT_PRODUCTS_DIR; }; 00A14CD3084E5821000150AD /* osgviewer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgviewer.app; sourceTree = BUILT_PRODUCTS_DIR; }; 00A14CF9084E582E000150AD /* osgversion.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgversion.app; sourceTree = BUILT_PRODUCTS_DIR; }; 00A14D52084E5A50000150AD /* osgviewer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = osgviewer.cpp; path = ../../applications/osgviewer/osgviewer.cpp; sourceTree = SOURCE_ROOT; }; @@ -5967,7 +6009,7 @@ 00C0CAC1062651A40091ED7C /* osgdb_freetype.so */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = osgdb_freetype.so; sourceTree = BUILT_PRODUCTS_DIR; }; 00C0CAE90626525D0091ED7C /* osgdb_osgText.so */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = osgdb_osgText.so; sourceTree = BUILT_PRODUCTS_DIR; }; 00C59D340B0926A800E9BCA1 /* osgsimpleviewerGLUT.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgsimpleviewerGLUT.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 00C59D630B092D3B00E9BCA1 /* osgsimpleviewerCocoa.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = osgsimpleviewerCocoa.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 00C59D630B092D3B00E9BCA1 /* osgsimpleviewerCocoa.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgsimpleviewerCocoa.app; sourceTree = BUILT_PRODUCTS_DIR; }; 00C59D7A0B0930E000E9BCA1 /* osgsimpleviewerGLUT.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgsimpleviewerGLUT.cpp; sourceTree = ""; }; 00C59DA90B09343B00E9BCA1 /* osgsimpleviewerSDL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgsimpleviewerSDL.app; sourceTree = BUILT_PRODUCTS_DIR; }; 00C59DBE0B0935E900E9BCA1 /* osgsimpleviewerSDL.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgsimpleviewerSDL.cpp; sourceTree = ""; }; @@ -6066,7 +6108,7 @@ 00EF4DFD06CB09E4008ACEFF /* osgshape.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgshape.cpp; sourceTree = ""; }; 00EF4E0406CB0A57008ACEFF /* osgsimple.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgsimple.cpp; sourceTree = ""; }; 00EF4E3306CB0AA0008ACEFF /* osgsimplifier.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgsimplifier.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 00EF4E4706CB0AA6008ACEFF /* osgsimulation.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = osgsimulation.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 00EF4E4706CB0AA6008ACEFF /* osgsimulation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgsimulation.app; sourceTree = BUILT_PRODUCTS_DIR; }; 00EF4E7406CB0BA5008ACEFF /* osgsimplifier.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgsimplifier.cpp; sourceTree = ""; }; 00EF4E7B06CB0C27008ACEFF /* osgsimulation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgsimulation.cpp; sourceTree = ""; }; 00EF4EB306CB0D45008ACEFF /* osgstereoimage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgstereoimage.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -6091,6 +6133,7 @@ 00F2393B076776E700528CDD /* osgplanets.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgplanets.app; sourceTree = BUILT_PRODUCTS_DIR; }; 00F239410767781100528CDD /* osgmotionblur.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgmotionblur.cpp; sourceTree = ""; }; 00F239480767784100528CDD /* osgplanets.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgplanets.cpp; sourceTree = ""; }; + 00F2DBA80B83BD1000345D8E /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = ""; }; 00FB206C0B013D200052DD79 /* IntersectionVisitor */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = IntersectionVisitor; path = ../../include/osgUtil/IntersectionVisitor; sourceTree = SOURCE_ROOT; }; 00FB20770B0141170052DD79 /* IntersectionVisitor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = IntersectionVisitor.cpp; path = ../../src/osgUtil/IntersectionVisitor.cpp; sourceTree = SOURCE_ROOT; }; 00FB21010B015CF20052DD79 /* osgViewer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = osgViewer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -6445,7 +6488,6 @@ D47A06CD0B83406700E19024 /* TranslateAxisDragger.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TranslateAxisDragger.cpp; sourceTree = ""; }; D47A06CE0B83406700E19024 /* TranslatePlaneDragger.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatePlaneDragger.cpp; sourceTree = ""; }; D47A070A0B83413800E19024 /* osgmanipulator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgmanipulator.app; sourceTree = BUILT_PRODUCTS_DIR; }; - D47A070C0B83413900E19024 /* osgsimplifier-Info copy 2.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "osgsimplifier-Info copy 2.plist"; sourceTree = ""; }; D47A07120B83417900E19024 /* osgmanipulator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgmanipulator.cpp; sourceTree = ""; }; D48EC64B0B4EBF2E000E05A4 /* CompositeViewer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CompositeViewer.cpp; sourceTree = ""; }; D48EC64C0B4EBF2F000E05A4 /* GraphicsWindowCocoa.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsWindowCocoa.cpp; sourceTree = ""; }; @@ -6514,7 +6556,6 @@ D4C6F2850B8317150052E667 /* ShadowVolume.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ShadowVolume.cpp; sourceTree = ""; }; D4C6F2860B8317150052E667 /* Version.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Version.cpp; sourceTree = ""; }; D4C6F2AD0B8317AB0052E667 /* osgshadow.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgshadow.app; sourceTree = BUILT_PRODUCTS_DIR; }; - D4C6F2AF0B8317AC0052E667 /* osgsimplifier-Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "osgsimplifier-Info copy.plist"; sourceTree = ""; }; D4C6F2B40B8318110052E667 /* osgshadow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = osgshadow.cpp; path = ../../examples/osgshadow/osgshadow.cpp; sourceTree = ""; }; /* End PBXFileReference section */ @@ -7948,6 +7989,7 @@ 00C59DA20B09343B00E9BCA1 /* OpenGL.framework in Frameworks */, 00C59DA30B09343B00E9BCA1 /* osgGA.framework in Frameworks */, 00C59DA40B09343B00E9BCA1 /* osgViewer.framework in Frameworks */, + 00F2DF4F0B8536C400345D8E /* osgText.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -10505,6 +10547,7 @@ 00C59ED50B09597100E9BCA1 /* osgsimpleviewerCocoa */ = { isa = PBXGroup; children = ( + 00F2DBA70B83BD0F00345D8E /* Localizable.strings */, 00C59ED80B09597200E9BCA1 /* InfoPlist.strings */, 00C59EDA0B09597300E9BCA1 /* MainMenu.nib */, 00C59EDE0B09597400E9BCA1 /* Info.plist */, @@ -10952,8 +10995,6 @@ 089C1665FE841158C02AAC07 /* Resources */, 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, 034768DDFF38A45A11DB9C8B /* Products */, - D4C6F2AF0B8317AC0052E667 /* osgsimplifier-Info copy.plist */, - D47A070C0B83413900E19024 /* osgsimplifier-Info copy 2.plist */, ); name = OpenSceneGraph; sourceTree = ""; @@ -16298,6 +16339,7 @@ 006CE9400921AB8300985402 /* osgdepthpartition */, 0007B98A06C1929E00C884E1 /* osgdepthshadow */, 0007B9DD06C196E400C884E1 /* osgdistortion */, + 006E24600AC0D66700FBB48F /* osgfadetext */, 0007BA0906C1982000C884E1 /* osgforest */, 0007BA4806C19BAE00C884E1 /* osgfxbrowser */, 000A263706CAE077009EE43A /* osggeodemo */, @@ -16315,6 +16357,7 @@ 000A272806CAE6FE009EE43A /* osglightpoint */, 00A14F17084E65B3000150AD /* osglogicop */, 000A273C06CAE708009EE43A /* osglogo */, + D47A06F80B83413800E19024 /* osgmanipulator */, 00F23916076776DE00528CDD /* osgmotionblur */, 000A278B06CAEDDE009EE43A /* osgmovie */, 006CE97E0921AC8700985402 /* osgmultiplecameras */, @@ -16338,6 +16381,7 @@ 00EF4D2906CB04B6008ACEFF /* osgsequence */, 00EF4D4306CB04BB008ACEFF /* osgshaders */, 006CE9BC0921AD3300985402 /* osgshaderterrain */, + D4C6F29C0B8317AB0052E667 /* osgshadow */, 00EF4D5D06CB04BE008ACEFF /* osgshadowtexture */, 00EF4D7706CB04C2008ACEFF /* osgshape */, 00EF4D9106CB04C6008ACEFF /* osgsimple */, @@ -16361,11 +16405,8 @@ 008F451706CC05A500F4220C /* osgvolume */, 00EF4F8906CB15BD008ACEFF /* osgwindows */, 0007BA3306C19B6900C884E1 /* os */, - 006E24600AC0D66700FBB48F /* osgfadetext */, 00EF4E3606CB0AA6008ACEFF /* osgsimulation */, 00C59D900B09343B00E9BCA1 /* osgsimpleviewerSDL */, - D4C6F29C0B8317AB0052E667 /* osgshadow */, - D47A06F80B83413800E19024 /* osgmanipulator */, ); }; /* End PBXProject section */ @@ -16899,6 +16940,7 @@ 00C59EE50B09597600E9BCA1 /* InfoPlist.strings in Resources */, 00C59EE60B09597600E9BCA1 /* MainMenu.nib in Resources */, 00C59EE80B09597600E9BCA1 /* Info.plist in Resources */, + 00F2DBA90B83BD1100345D8E /* Localizable.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -20930,6 +20972,31 @@ target = 00F2392A076776E700528CDD /* osgplanets */; targetProxy = 00F23A1807678DB800528CDD /* PBXContainerItemProxy */; }; + 00F2DEFE0B852AAA00345D8E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 001DFD73065A9908003310BF /* osgdb_x */; + targetProxy = 00F2DEFD0B852AAA00345D8E /* PBXContainerItemProxy */; + }; + 00F2DF100B852D1300345D8E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 006E24600AC0D66700FBB48F /* osgfadetext */; + targetProxy = 00F2DF0F0B852D1300345D8E /* PBXContainerItemProxy */; + }; + 00F2DF120B852D1300345D8E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = D47A06F80B83413800E19024 /* osgmanipulator */; + targetProxy = 00F2DF110B852D1300345D8E /* PBXContainerItemProxy */; + }; + 00F2DF140B852D1300345D8E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 00C59D480B092D3B00E9BCA1 /* osgsimpleviewerCocoa */; + targetProxy = 00F2DF130B852D1300345D8E /* PBXContainerItemProxy */; + }; + 00F2DF160B852DFC00345D8E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = D4C6F29C0B8317AB0052E667 /* osgshadow */; + targetProxy = 00F2DF150B852DFC00345D8E /* PBXContainerItemProxy */; + }; 00FB20D10B015CF10052DD79 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BE117FB205D63B3800EB53E5 /* osg */; @@ -21124,6 +21191,14 @@ name = MainMenu.nib; sourceTree = ""; }; + 00F2DBA70B83BD0F00345D8E /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 00F2DBA80B83BD1000345D8E /* English */, + ); + name = Localizable.strings; + sourceTree = ""; + }; 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( @@ -34804,7 +34879,7 @@ GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = YES; GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgManipulator.plist"; + INFOPLIST_FILE = "osgManipulator-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -34838,7 +34913,7 @@ GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = YES; GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgManipulator.plist"; + INFOPLIST_FILE = "osgManipulator-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -34866,7 +34941,7 @@ GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgManipulator.plist"; + INFOPLIST_FILE = "osgManipulator-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -34903,7 +34978,7 @@ "$(inherited)", ../../../Producer/include, ); - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgmanipulator-Info.plist"; + INFOPLIST_FILE = "osgmanipulatorexample-Info.plist"; INSTALL_PATH = "$(USER_APPS_DIR)"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -34934,7 +35009,7 @@ GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgsimplifier-Info copy 2.plist"; + INFOPLIST_FILE = "osgmanipulatorexample-Info.plist"; INSTALL_PATH = "$(USER_APPS_DIR)"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -34960,7 +35035,7 @@ GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgsimplifier-Info copy 2.plist"; + INFOPLIST_FILE = "osgmanipulatorexample-Info.plist"; INSTALL_PATH = "$(USER_APPS_DIR)"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -34991,7 +35066,7 @@ GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = YES; GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgShadow.plist"; + INFOPLIST_FILE = "osgShadow-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -35029,7 +35104,7 @@ GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = YES; GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgShadow.plist"; + INFOPLIST_FILE = "osgShadow-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -35057,7 +35132,7 @@ GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgShadow.plist"; + INFOPLIST_FILE = "osgShadow-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -35091,7 +35166,7 @@ GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgshadow-Info.plist"; + INFOPLIST_FILE = "osgshadowexample-Info.plist"; INSTALL_PATH = "$(USER_APPS_DIR)"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -35122,7 +35197,7 @@ GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgsimplifier-Info copy.plist"; + INFOPLIST_FILE = "osgshadowexample-Info.plist"; INSTALL_PATH = "$(USER_APPS_DIR)"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -35148,7 +35223,7 @@ GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = "/Users/stephan/Desktop/current OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/osgsimplifier-Info copy.plist"; + INFOPLIST_FILE = "osgshadowexample-Info.plist"; INSTALL_PATH = "$(USER_APPS_DIR)"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( diff --git a/Xcode/OpenSceneGraph/osgManipulator.plist b/Xcode/OpenSceneGraph/osgManipulator-Info.plist similarity index 100% rename from Xcode/OpenSceneGraph/osgManipulator.plist rename to Xcode/OpenSceneGraph/osgManipulator-Info.plist diff --git a/Xcode/OpenSceneGraph/osgShadow.plist b/Xcode/OpenSceneGraph/osgShadow-Info.plist similarity index 100% rename from Xcode/OpenSceneGraph/osgShadow.plist rename to Xcode/OpenSceneGraph/osgShadow-Info.plist diff --git a/Xcode/OpenSceneGraph/osgmanipulator-Info.plist b/Xcode/OpenSceneGraph/osgmanipulatorexample-Info.plist similarity index 100% rename from Xcode/OpenSceneGraph/osgmanipulator-Info.plist rename to Xcode/OpenSceneGraph/osgmanipulatorexample-Info.plist diff --git a/Xcode/OpenSceneGraph/osgshadow-Info.plist b/Xcode/OpenSceneGraph/osgshadowexample-Info.plist similarity index 100% rename from Xcode/OpenSceneGraph/osgshadow-Info.plist rename to Xcode/OpenSceneGraph/osgshadowexample-Info.plist diff --git a/examples/osgsimpleviewerSDL/SDLMainForMacOSX.h b/examples/osgsimpleviewerSDL/SDLMainForMacOSX.h new file mode 100644 index 000000000..758290221 --- /dev/null +++ b/examples/osgsimpleviewerSDL/SDLMainForMacOSX.h @@ -0,0 +1,15 @@ +/* SDLMain.m - main entry point for our Cocoa-ized SDL app + Initial Version: Darrell Walisser + Non-NIB-Code & other changes: Max Horn + + Feel free to customize this file to suit your needs + + OSG users: This is the standard SDLMain (nibless) that + comes with the SDL distribution. Only the file name has + been changed to avoid confusing non-Mac users. +*/ + +#import + +@interface SDLMain : NSObject +@end diff --git a/examples/osgsimpleviewerSDL/SDLMainForMacOSX.m b/examples/osgsimpleviewerSDL/SDLMainForMacOSX.m new file mode 100644 index 000000000..b353e416b --- /dev/null +++ b/examples/osgsimpleviewerSDL/SDLMainForMacOSX.m @@ -0,0 +1,388 @@ +/* SDLMain.m - main entry point for our Cocoa-ized SDL app + Initial Version: Darrell Walisser + Non-NIB-Code & other changes: Max Horn + + Feel free to customize this file to suit your needs + + OSG users: This is the standard SDLMain (nibless) that + comes with the SDL distribution. Only the file name has + been changed to avoid confusing non-Mac users. +*/ + +#import "SDL.h" +#import "SDLMainForMacOSX.h" +#import /* for MAXPATHLEN */ +#import + +/* For some reaon, Apple removed setAppleMenu from the headers in 10.4, + but the method still is there and works. To avoid warnings, we declare + it ourselves here. */ +@interface NSApplication(SDL_Missing_Methods) +- (void)setAppleMenu:(NSMenu *)menu; +@end + +/* Use this flag to determine whether we use SDLMain.nib or not */ +#define SDL_USE_NIB_FILE 0 + +/* Use this flag to determine whether we use CPS (docking) or not */ +#define SDL_USE_CPS 1 +#ifdef SDL_USE_CPS +/* Portions of CPS.h */ +typedef struct CPSProcessSerNum +{ + UInt32 lo; + UInt32 hi; +} CPSProcessSerNum; + +extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn); +extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5); +extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn); + +#endif /* SDL_USE_CPS */ + +static int gArgc; +static char **gArgv; +static BOOL gFinderLaunch; +static BOOL gCalledAppMainline = FALSE; + +static NSString *getApplicationName(void) +{ + NSDictionary *dict; + NSString *appName = 0; + + /* Determine the application name */ + dict = (NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle()); + if (dict) + appName = [dict objectForKey: @"CFBundleName"]; + + if (![appName length]) + appName = [[NSProcessInfo processInfo] processName]; + + return appName; +} + +#if SDL_USE_NIB_FILE +/* A helper category for NSString */ +@interface NSString (ReplaceSubString) +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; +@end +#endif + +@interface SDLApplication : NSApplication +@end + +@implementation SDLApplication +/* Invoked from the Quit menu item */ +- (void)terminate:(id)sender +{ + /* Post a SDL_QUIT event */ + SDL_Event event; + event.type = SDL_QUIT; + SDL_PushEvent(&event); +} +@end + +/* The main class of the application, the application's delegate */ +@implementation SDLMain + +/* Set the working directory to the .app's parent directory */ +- (void) setupWorkingDirectory:(BOOL)shouldChdir +{ + if (shouldChdir) + { + char parentdir[MAXPATHLEN]; + CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); + CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); + if (CFURLGetFileSystemRepresentation(url2, true, (UInt8 *)parentdir, MAXPATHLEN)) { + assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ + } + CFRelease(url); + CFRelease(url2); + } + +} + +#if SDL_USE_NIB_FILE + +/* Fix menu to contain the real app name instead of "SDL App" */ +- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName +{ + NSRange aRange; + NSEnumerator *enumerator; + NSMenuItem *menuItem; + + aRange = [[aMenu title] rangeOfString:@"SDL App"]; + if (aRange.length != 0) + [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; + + enumerator = [[aMenu itemArray] objectEnumerator]; + while ((menuItem = [enumerator nextObject])) + { + aRange = [[menuItem title] rangeOfString:@"SDL App"]; + if (aRange.length != 0) + [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]]; + if ([menuItem hasSubmenu]) + [self fixMenu:[menuItem submenu] withAppName:appName]; + } + [ aMenu sizeToFit ]; +} + +#else + +static void setApplicationMenu(void) +{ + /* warning: this code is very odd */ + NSMenu *appleMenu; + NSMenuItem *menuItem; + NSString *title; + NSString *appName; + + appName = getApplicationName(); + appleMenu = [[NSMenu alloc] initWithTitle:@""]; + + /* Add menu items */ + title = [@"About " stringByAppendingString:appName]; + [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; + + [appleMenu addItem:[NSMenuItem separatorItem]]; + + title = [@"Hide " stringByAppendingString:appName]; + [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; + + menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; + [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; + + [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""]; + + [appleMenu addItem:[NSMenuItem separatorItem]]; + + title = [@"Quit " stringByAppendingString:appName]; + [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; + + + /* Put menu into the menubar */ + menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; + [menuItem setSubmenu:appleMenu]; + [[NSApp mainMenu] addItem:menuItem]; + + /* Tell the application object that this is now the application menu */ + [NSApp setAppleMenu:appleMenu]; + + /* Finally give up our references to the objects */ + [appleMenu release]; + [menuItem release]; +} + +/* Create a window menu */ +static void setupWindowMenu(void) +{ + NSMenu *windowMenu; + NSMenuItem *windowMenuItem; + NSMenuItem *menuItem; + + windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; + + /* "Minimize" item */ + menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; + [windowMenu addItem:menuItem]; + [menuItem release]; + + /* Put menu into the menubar */ + windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; + [windowMenuItem setSubmenu:windowMenu]; + [[NSApp mainMenu] addItem:windowMenuItem]; + + /* Tell the application object that this is now the window menu */ + [NSApp setWindowsMenu:windowMenu]; + + /* Finally give up our references to the objects */ + [windowMenu release]; + [windowMenuItem release]; +} + +/* Replacement for NSApplicationMain */ +static void CustomApplicationMain (int argc, char **argv) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + SDLMain *sdlMain; + + /* Ensure the application object is initialised */ + [SDLApplication sharedApplication]; + +#ifdef SDL_USE_CPS + { + CPSProcessSerNum PSN; + /* Tell the dock about us */ + if (!CPSGetCurrentProcess(&PSN)) + if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103)) + if (!CPSSetFrontProcess(&PSN)) + [SDLApplication sharedApplication]; + } +#endif /* SDL_USE_CPS */ + + /* Set up the menubar */ + [NSApp setMainMenu:[[NSMenu alloc] init]]; + setApplicationMenu(); + setupWindowMenu(); + + /* Create SDLMain and make it the app delegate */ + sdlMain = [[SDLMain alloc] init]; + [NSApp setDelegate:sdlMain]; + + /* Start the main event loop */ + [NSApp run]; + + [sdlMain release]; + [pool release]; +} + +#endif + + +/* + * Catch document open requests...this lets us notice files when the app + * was launched by double-clicking a document, or when a document was + * dragged/dropped on the app's icon. You need to have a + * CFBundleDocumentsType section in your Info.plist to get this message, + * apparently. + * + * Files are added to gArgv, so to the app, they'll look like command line + * arguments. Previously, apps launched from the finder had nothing but + * an argv[0]. + * + * This message may be received multiple times to open several docs on launch. + * + * This message is ignored once the app's mainline has been called. + */ +- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename +{ + const char *temparg; + size_t arglen; + char *arg; + char **newargv; + + if (!gFinderLaunch) /* MacOS is passing command line args. */ + return FALSE; + + if (gCalledAppMainline) /* app has started, ignore this document. */ + return FALSE; + + temparg = [filename UTF8String]; + arglen = SDL_strlen(temparg) + 1; + arg = (char *) SDL_malloc(arglen); + if (arg == NULL) + return FALSE; + + newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2)); + if (newargv == NULL) + { + SDL_free(arg); + return FALSE; + } + gArgv = newargv; + + SDL_strlcpy(arg, temparg, arglen); + gArgv[gArgc++] = arg; + gArgv[gArgc] = NULL; + return TRUE; +} + + +/* Called when the internal event loop has just started running */ +- (void) applicationDidFinishLaunching: (NSNotification *) note +{ + int status; + + /* Set the working directory to the .app's parent directory */ + [self setupWorkingDirectory:gFinderLaunch]; + +#if SDL_USE_NIB_FILE + /* Set the main menu to contain the real app name instead of "SDL App" */ + [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()]; +#endif + + /* Hand off to main application code */ + gCalledAppMainline = TRUE; + status = SDL_main (gArgc, gArgv); + + /* We're done, thank you for playing */ + exit(status); +} +@end + + +@implementation NSString (ReplaceSubString) + +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString +{ + unsigned int bufferSize; + unsigned int selfLen = [self length]; + unsigned int aStringLen = [aString length]; + unichar *buffer; + NSRange localRange; + NSString *result; + + bufferSize = selfLen + aStringLen - aRange.length; + buffer = NSAllocateMemoryPages(bufferSize*sizeof(unichar)); + + /* Get first part into buffer */ + localRange.location = 0; + localRange.length = aRange.location; + [self getCharacters:buffer range:localRange]; + + /* Get middle part into buffer */ + localRange.location = 0; + localRange.length = aStringLen; + [aString getCharacters:(buffer+aRange.location) range:localRange]; + + /* Get last part into buffer */ + localRange.location = aRange.location + aRange.length; + localRange.length = selfLen - localRange.location; + [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange]; + + /* Build output string */ + result = [NSString stringWithCharacters:buffer length:bufferSize]; + + NSDeallocateMemoryPages(buffer, bufferSize); + + return result; +} + +@end + + + +#ifdef main +# undef main +#endif + + +/* Main entry point to executable - should *not* be SDL_main! */ +int main (int argc, char **argv) +{ + /* Copy the arguments into a global variable */ + /* This is passed if we are launched by double-clicking */ + if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { + gArgv = (char **) SDL_malloc(sizeof (char *) * 2); + gArgv[0] = argv[0]; + gArgv[1] = NULL; + gArgc = 1; + gFinderLaunch = YES; + } else { + int i; + gArgc = argc; + gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1)); + for (i = 0; i <= argc; i++) + gArgv[i] = argv[i]; + gFinderLaunch = NO; + } + +#if SDL_USE_NIB_FILE + [SDLApplication poseAsClass:[NSApplication class]]; + NSApplicationMain (argc, argv); +#else + CustomApplicationMain (argc, argv); +#endif + return 0; +} +