00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #pragma once
00024
00025 #include "cinder/App/App.h"
00026 #include "cinder/cocoa/CinderCocoaTouch.h"
00027
00028 namespace cinder { namespace app {
00029
00030 struct AppCocoaTouchState;
00031
00032 class AppCocoaTouch : public App {
00033 public:
00034 class Settings : public App::Settings {
00035 public:
00036 Settings()
00037 : App::Settings() {}
00038 };
00039
00040 AppCocoaTouch();
00041 virtual ~AppCocoaTouch() {}
00042
00044 virtual int getWindowWidth() const;
00046 virtual int getWindowHeight() const;
00048 void setWindowWidth( int windowWidth ) {}
00050 void setWindowHeight( int windowHeight ) {}
00052 void setWindowSize( int windowWidth, int windowHeight ) {}
00053
00055 virtual float getFrameRate() const;
00057 virtual void setFrameRate( float aFrameRate );
00059 virtual bool isFullScreen() const;
00061 virtual void setFullScreen( bool aFullScreen );
00062
00063 virtual double getElapsedSeconds() const;
00064
00066 virtual std::string getAppPath();
00067
00069 virtual void quit();
00070
00072 static AppCocoaTouch* get() { return sInstance; }
00073
00075
00076 static void prepareLaunch() { App::prepareLaunch(); }
00077 static void executeLaunch( AppCocoaTouch *app, class Renderer *renderer, const char *title, int argc, char * const argv[] ) { sInstance = app; App::executeLaunch( app, renderer, title, argc, argv ); }
00078 static void cleanupLaunch() { App::cleanupLaunch(); }
00079
00080 virtual void launch( const char *title, int argc, char * const argv[] );
00082
00083 private:
00084 friend void setupCocoaTouchWindow( AppCocoaTouch *app );
00085
00086
00087 shared_ptr<AppCocoaTouchState> mState;
00088
00089 static AppCocoaTouch *sInstance;
00090 };
00091
00092 } }
00093
00094 #define CINDER_APP_COCOA_TOUCH( APP, RENDERER ) \
00095 int main( int argc, char *argv[] ) { \
00096 cinder::app::AppCocoaTouch::prepareLaunch(); \
00097 cinder::app::AppCocoaTouch *app = new APP; \
00098 cinder::app::Renderer *ren = new RENDERER; \
00099 cinder::app::AppCocoaTouch::executeLaunch( app, ren, #APP, argc, argv );\
00100 cinder::app::AppCocoaTouch::cleanupLaunch(); \
00101 return 0; \
00102 }