X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=OSX%2FXScreenSaverView.h;h=8283d35e16ff8e665caf73cd7cc6b6cef87aceed;hb=39809ded547bdbb08207d3e514950425215b4410;hp=c60dfc8a1129a8f2a2f22a24387b81d1d261f78c;hpb=7edd66e6bd3209013ee059819747b10b5835635b;p=xscreensaver diff --git a/OSX/XScreenSaverView.h b/OSX/XScreenSaverView.h index c60dfc8a..8283d35e 100644 --- a/OSX/XScreenSaverView.h +++ b/OSX/XScreenSaverView.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2014 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2017 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 @@ -25,9 +25,11 @@ # define NSImage UIImage # define NSEvent UIEvent # define NSWindow UIWindow +# define NSOpenGLContext EAGLContext #else # import # import +//# define USE_TOUCHBAR #endif @@ -35,6 +37,15 @@ #import "PrefsReader.h" #ifdef USE_IPHONE + +@class XScreenSaverView; + +@protocol XScreenSaverViewDelegate +- (void) wantsFadeOut:(XScreenSaverView *)saverView; +- (void) didShake:(XScreenSaverView *)saverView; +- (void) openPreferences: (NSString *)which; +@end + @interface ScreenSaverView : NSView - (id)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview; - (NSTimeInterval)animationTimeInterval; @@ -52,11 +63,8 @@ #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 +// Currently only OpenGL backbuffers are supported (OSX and iOS). +# define BACKBUFFER_OPENGL @interface XScreenSaverView : ScreenSaverView # ifdef USE_IPHONE @@ -76,58 +84,97 @@ Window xwindow; void *xdata; fps_state *fpst; + void (*fps_cb) (Display *, Window, fps_state *, void *); + + BOOL _lowrez_p; // Whether the saver prefers 1990s pixels. # ifdef USE_IPHONE - UIDeviceOrientation orientation, new_orientation; BOOL screenLocked; - - 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; // whether hack requested "always portrait". + BOOL _ignoreRotation; // whether hack requested "always portrait". // some want this, some do not. - NSTimer *crash_timer; NSDictionary *function_tables; -# endif // USE_IPHONE + id _delegate; + + UIView *closeBox; + NSTimer *closeBoxTimer; + + CGAffineTransform pinch_transform; -# ifdef USE_BACKBUFFER +# else // !USE_PHONE + + NSOpenGLPixelFormat *pixfmt; + +# endif // !USE_IPHONE + +# ifdef USE_TOUCHBAR + NSWindow *touchbar_window; + XScreenSaverView *touchbar_view; +# endif + + NSOpenGLContext *ogl_ctx; // OpenGL rendering context + +# ifdef JWXYZ_QUARTZ CGContextRef backbuffer; - CGSize backbuffer_size; // pixels, not points. CGColorSpaceRef colorspace; -# ifdef BACKBUFFER_CGCONTEXT - CGContextRef window_ctx; +# ifdef BACKBUFFER_OPENGL + void *backbuffer_data; + GLsizei backbuffer_len; + + GLsizei gl_texture_w, gl_texture_h; + + GLuint backbuffer_texture; + GLenum gl_texture_target; + GLenum gl_pixel_format, gl_pixel_type; +# ifndef USE_IPHONE + BOOL double_buffered_p, gl_apple_client_storage_p; +# else // USE_IPHONE + BOOL gl_limited_npot_p; + GLuint gl_framebuffer, gl_renderbuffer; +# endif // USE_IPHONE # endif -# endif // USE_BACKBUFFER +# endif // JWXYZ_QUARTZ + +# if defined JWXYZ_GL && defined USE_IPHONE + NSOpenGLContext *ogl_ctx_pixmap; +# endif // JWXYZ_GL && USE_IPHONE } - (id)initWithFrame:(NSRect)frame saverName:(NSString*)n isPreview:(BOOL)p; - (void) render_x11; +- (NSOpenGLContext *) oglContext; - (void) prepareContext; -- (void) resizeContext; - (NSUserDefaultsController *) userDefaultsController; + (NSString *) decompressXML:(NSData *)xml; +- (CGFloat) hackedContentScaleFactor; + #ifdef USE_IPHONE -- (void)didRotate:(NSNotification *)notification; -- (BOOL)reshapeRotatedWindow; - (void)setScreenLocked:(BOOL)locked; -#endif // USE_IPHONE - -#ifdef USE_BACKBUFFER -- (void)initLayer; +- (NSDictionary *)getGLProperties; +- (void)addExtraRenderbuffers:(CGSize)size; +- (NSString *)getCAGravity; +- (void)orientationChanged; +@property (nonatomic, assign) id delegate; +@property (nonatomic) BOOL ignoreRotation; +- (BOOL)suppressRotationAnimation; +- (BOOL)rotateTouches; +#else // !USE_IPHONE +- (NSOpenGLPixelFormat *)getGLPixelFormat; +#endif // !USE_IPHONE + +- (void)enableBackbuffer:(CGSize)new_backbuffer_size; +- (void)setViewport; - (void)createBackbuffer:(CGSize)s; -#endif // USE_BACKBUFFER +- (void)reshape_x11; +#ifdef JWXYZ_QUARTZ +- (void)drawBackbuffer; +#endif // JWXYZ_QUARTZ +- (void)flushBackbuffer; @end