-/* xscreensaver, Copyright (c) 2006-2013 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
-* the above copyright notice appear in all copies and that both that
-* copyright notice and this permission notice appear in supporting
-* documentation. No representations are made about the suitability of this
-* software for any purpose. It is provided "as is" without express or
-* implied warranty.
-*/
+/* xscreensaver, Copyright (c) 2006-2014 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
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
/* This is a subclass of Apple's ScreenSaverView that knows how to run
xscreensaver programs without X11 via the dark magic of the "jwxyz"
#endif // USE_IPHONE
-#ifdef USE_IPHONE
-# define USE_BACKBUFFER /* must be in sync with jwxyz.h */
-#endif
+#define USE_BACKBUFFER // must be in sync with jwxyz.m
+// If USE_BACKBUFFER is enabled, one of these must also be enabled.
+// #define BACKBUFFER_CGCONTEXT // Not supported by iOS.
+#define BACKBUFFER_CALAYER
@interface XScreenSaverView : ScreenSaverView
# ifdef USE_IPHONE
# ifdef USE_IPHONE
UIDeviceOrientation orientation, new_orientation;
- double tap_time;
- CGPoint tap_point;
BOOL screenLocked;
- GLfloat rotation_ratio; // ratio thru rotation anim, or -1
- NSSize rot_from, rot_to; // start size rect, end size rect
- GLfloat angle_from, angle_to; // start angle, end angle
+ CGSize initial_bounds; // portrait-mode size (pixels, not points).
+
+ GLfloat rotation_ratio; // ratio [0-1] thru rotation anim, or -1
+ NSSize rot_current_size; // intermediate or at-rest orientation.
+ NSSize rot_from, rot_to; // start/end size rect (pixels, not points)
+ GLfloat rot_current_angle; // only right angles when rotation complete.
+ GLfloat angle_from, angle_to; // start angle, end angle (degrees)
double rot_start_time;
- BOOL ignore_rotation_p;
- NSSize rot_current_size;
- GLfloat rot_current_angle;
+ BOOL ignore_rotation_p; // whether hack requested "always portrait".
+ // some want this, some do not.
NSTimer *crash_timer;
# ifdef USE_BACKBUFFER
CGContextRef backbuffer;
- CGSize backbuffer_size;
+ CGSize backbuffer_size; // pixels, not points.
+ CGColorSpaceRef colorspace;
+
+# ifdef BACKBUFFER_CGCONTEXT
+ CGContextRef window_ctx;
+# endif
+
# endif // USE_BACKBUFFER
}
- (void) prepareContext;
- (void) resizeContext;
- (NSUserDefaultsController *) userDefaultsController;
++ (NSString *) decompressXML:(NSData *)xml;
#ifdef USE_IPHONE
- (void)didRotate:(NSNotification *)notification;
+- (BOOL)reshapeRotatedWindow;
- (void)setScreenLocked:(BOOL)locked;
#endif // USE_IPHONE
#ifdef USE_BACKBUFFER
- (void)initLayer;
-- (void)createBackbuffer;
+- (void)createBackbuffer:(CGSize)s;
#endif // USE_BACKBUFFER
@end