From http://www.jwz.org/xscreensaver/xscreensaver-5.37.tar.gz
[xscreensaver] / OSX / SaverRunner.h
index 3ddc6b87f82074ccd9e67c9a92d0de35b5694121..073a87ed68d828a25d7c1074f34835c6a054cfea 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2006-2011 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2016 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  * implied warranty.
  */
 
-#import <Cocoa/Cocoa.h>
-#import <ScreenSaver/ScreenSaver.h>
+#ifdef USE_IPHONE
+# import <Foundation/Foundation.h>
+# import <UIKit/UIKit.h>
+# import <OpenGLES/EAGL.h>
+# import <OpenGLES/ES1/gl.h>
+# import <OpenGLES/ES1/glext.h>
+# import <QuartzCore/QuartzCore.h>
+# define NSView  UIView
+# define NSRect  CGRect
+# define NSSize  CGSize
+# define NSColor UIColor
+# define NSImage UIImage
+# define NSEvent UIEvent
+# define NSWindow UIWindow
+# define NSButton UIButton
+# define NSApplication UIApplication
+# define NSScreen UIScreen
+#else
+# import <Cocoa/Cocoa.h>
+# import <ScreenSaver/ScreenSaver.h>
+#endif
+
+#import <XScreenSaverView.h>
+
+#ifdef USE_IPHONE
+
+@class SaverRunner;
+
+@interface SaverViewController : UIViewController
+{
+  SaverRunner *_parent;
+  NSString *_saverName;
+  XScreenSaverView *_saverView;
+
+  /* When a the SaverViewController is presented, iOS automatically changes
+     the status bar orientation. (And, by extension, the notification center
+     orientation.) But there's no willPresentAsModal: event for a
+     UIViewController so that it knows when this is going to happen, and the
+     other event handlers occur after the status bar is changed. So save the
+     orientation just before the view controller is modal-presented, and
+     restore the proper status bar orientation just before the saverView is
+     created so it can pick it up in didRotate:. */
+  // UIInterfaceOrientation _storedOrientation;
+
+  BOOL _showAboutBox;
+  UIView *aboutBox;
+  NSTimer *splashTimer;
+}
+
+@property(nonatomic, retain) NSString *saverName;
+
+@end
+
+#endif
 
 @interface SaverRunner : NSObject
+# ifdef USE_IPHONE
+  <XScreenSaverViewDelegate>
+# else
+  <NSWindowDelegate>
+# endif
 {
-  NSString *saverDir;
-  NSArray  *saverNames;
-  NSArray  *windows;
+  NSString *saverName;         // the one currently loaded
+  NSArray  *saverNames;                // Names of available savers
+  NSString *saverDir;          // Where we find saver bundles
+
+# ifndef USE_IPHONE
+
   NSBundle *saverBundle;
+  NSArray  *windows;
   IBOutlet NSMenu *menubar;
+  NSTimer *anim_timer;
+
+# else  // USE_IPHONE
+
+  UINavigationController *rotating_nav;                // Hierarchy 1 (UI)
+  IBOutlet UIWindow *window;
+  IBOutlet UIView *view;
+
+  SaverViewController *nonrotating_controller; // Hierarchy 2 (savers)
+
+  UIImage *saved_screenshot;
+
+# endif // USE_IPHONE
 }
 
-- (IBAction) openPreferences: (id)sender;
-- (IBAction) aboutPanel: (id)sender;
+- (XScreenSaverView *) newSaverView: (NSString *) module
+                           withSize: (NSSize) size;
+- (void) loadSaver: (NSString *)name;
+- (void) selectedSaverDidChange:(NSDictionary *)change;
+
+#ifndef USE_IPHONE
+- (void) openPreferences: (id)sender;
+#else  // USE_IPHONE
+- (UIImage *) screenshot;
+- (NSString *) makeDesc:(NSString *)saver
+               yearOnly:(BOOL) yearp;
+#endif // USE_IPHONE
 
 @end