X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=OSX%2FXScreenSaverView.h;h=c60dfc8a1129a8f2a2f22a24387b81d1d261f78c;hb=7edd66e6bd3209013ee059819747b10b5835635b;hp=7365b9d82080e0566111c4ccdfb95f502215aaf8;hpb=6f5482d73adb0165c0130bb47d852644ab0c4869;p=xscreensaver diff --git a/OSX/XScreenSaverView.h b/OSX/XScreenSaverView.h index 7365b9d8..c60dfc8a 100644 --- a/OSX/XScreenSaverView.h +++ b/OSX/XScreenSaverView.h @@ -1,13 +1,13 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski -* -* 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 + * + * 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" @@ -52,6 +52,12 @@ #endif // USE_IPHONE +#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 @@ -73,25 +79,36 @@ # 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; - NSSize rot_current_size; - GLfloat rot_current_angle; - - CGContextRef backbuffer; - NSSize backbuffer_size; + BOOL ignore_rotation_p; // whether hack requested "always portrait". + // some want this, some do not. NSTimer *crash_timer; + NSDictionary *function_tables; + # endif // USE_IPHONE +# ifdef USE_BACKBUFFER + CGContextRef backbuffer; + CGSize backbuffer_size; // pixels, not points. + CGColorSpaceRef colorspace; + +# ifdef BACKBUFFER_CGCONTEXT + CGContextRef window_ctx; +# endif + +# endif // USE_BACKBUFFER } - (id)initWithFrame:(NSRect)frame saverName:(NSString*)n isPreview:(BOOL)p; @@ -100,11 +117,17 @@ - (void) prepareContext; - (void) resizeContext; - (NSUserDefaultsController *) userDefaultsController; ++ (NSString *) decompressXML:(NSData *)xml; #ifdef USE_IPHONE - (void)didRotate:(NSNotification *)notification; +- (BOOL)reshapeRotatedWindow; - (void)setScreenLocked:(BOOL)locked; -- (void)createBackbuffer; #endif // USE_IPHONE +#ifdef USE_BACKBUFFER +- (void)initLayer; +- (void)createBackbuffer:(CGSize)s; +#endif // USE_BACKBUFFER + @end