]> git.hungrycats.org Git - xscreensaver/blobdiff - OSX/XScreenSaverView.h
From https://www.jwz.org/xscreensaver/xscreensaver-6.09.tar.gz
[xscreensaver] / OSX / XScreenSaverView.h
index cc6867b573340c16cfa0700cc55b3785e309b18d..1ab2187cb7d7e812889b321de68f984d38856f29 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2006-2015 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright © 2006-2023 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
@@ -15,7 +15,7 @@
    the "screenhack.c" module.
  */
 
-#ifdef USE_IPHONE
+#ifdef HAVE_IPHONE
 # import <Foundation/Foundation.h>
 # import <UIKit/UIKit.h>
 # define NSView  UIView
 #import "screenhackI.h"
 #import "PrefsReader.h"
 
-#ifdef USE_IPHONE
+#ifdef HAVE_IPHONE
+
+# if TARGET_OS_TV && !defined(HAVE_TVOS)
+   // We aren't receiving this from Xcode when compiling libjwxyz.a for tvOS.
+#  define HAVE_TVOS 1
+# endif
 
 @class XScreenSaverView;
 
 @protocol XScreenSaverViewDelegate
 - (void) wantsFadeOut:(XScreenSaverView *)saverView;
 - (void) didShake:(XScreenSaverView *)saverView;
+- (void) openPreferences: (NSString *)which;
 @end
 
 @interface ScreenSaverView : NSView
 - (BOOL)isPreview;
 @end
 
-#endif // USE_IPHONE
+#endif // HAVE_IPHONE
 
 
-#define USE_BACKBUFFER  // must be in sync with jwxyz.m
 // Currently only OpenGL backbuffers are supported (OSX and iOS).
 # define BACKBUFFER_OPENGL
 
 @interface XScreenSaverView : ScreenSaverView
-# ifdef USE_IPHONE
+# if defined(HAVE_TVOS)
+                             <UIApplicationDelegate>
+# elif defined(HAVE_IPHONE)
                              <UIAlertViewDelegate>
 # endif
 {
   struct xscreensaver_function_table *xsft;
   PrefsReader *prefsReader;
+  NSString *saver_title;  // "Möbius Gears", not "MoebiusGears"
 
   BOOL setup_p;                   // whether xsft->setup_cb() has been run
   BOOL initted_p;          // whether xsft->init_cb() has been run
   Window xwindow;
   void *xdata;
   fps_state *fpst;
+  void (*fps_cb) (Display *, Window, fps_state *, void *);
 
-# 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 _lowrez_p;              // Whether the saver prefers 1990s pixels.
 
-  BOOL ignore_rotation_p;      // whether hack requested "always portrait".
+# ifdef HAVE_IPHONE
+  BOOL screenLocked;
+  BOOL _ignoreRotation;                // whether hack requested "always portrait".
                                // some want this, some do not.
-
   NSTimer *crash_timer;
+  NSTimer *cycle_timer;
 
   NSDictionary *function_tables;
 
   id<XScreenSaverViewDelegate> _delegate;
 
-# endif // USE_IPHONE
+  UIView *closeBox;
+  NSTimer *closeBoxTimer;
+
+  CGAffineTransform pinch_transform;
+
+# else // !USE_PHONE
 
-# ifdef USE_BACKBUFFER
+  NSOpenGLPixelFormat *pixfmt;
+
+# endif // !HAVE_IPHONE
+
+  NSOpenGLContext *ogl_ctx;      // OpenGL rendering context
+
+# ifdef JWXYZ_QUARTZ
   CGContextRef backbuffer;
-  CGSize backbuffer_size;      // pixels, not points.
   CGColorSpaceRef colorspace;
 
 #  ifdef BACKBUFFER_OPENGL
   void *backbuffer_data;
-  size_t backbuffer_len;
+  GLsizei backbuffer_len;
 
   GLsizei gl_texture_w, gl_texture_h;
 
-  NSOpenGLContext *ogl_ctx;      // OpenGL rendering context
   GLuint backbuffer_texture;
   GLenum gl_texture_target;
   GLenum gl_pixel_format, gl_pixel_type;
-#   ifndef USE_IPHONE
+#   ifndef HAVE_IPHONE
   BOOL double_buffered_p, gl_apple_client_storage_p;
-#   else // USE_IPHONE
+#   else // HAVE_IPHONE
   BOOL gl_limited_npot_p;
   GLuint gl_framebuffer, gl_renderbuffer;
-#   endif // USE_IPHONE
+#   endif // HAVE_IPHONE
 #  endif
 
-# endif // USE_BACKBUFFER
+# endif // JWXYZ_QUARTZ
+
+# if defined JWXYZ_GL && defined HAVE_IPHONE
+  NSOpenGLContext *ogl_ctx_pixmap;
+# endif // JWXYZ_GL && HAVE_IPHONE
 }
 
-- (id)initWithFrame:(NSRect)frame saverName:(NSString*)n isPreview:(BOOL)p;
+- (id)initWithFrame:(NSRect)f title:(NSString*)t isPreview:(BOOL)p
+         randomizer:(BOOL)r;
+- (id)initWithFrame:(NSRect)f title:(NSString*)t isPreview:(BOOL)p;
+- (id)initWithFrame:(NSRect)f isPreview:(BOOL)p randomizer:(BOOL)r;
+- (void) stopAnimationWithException:(NSException *)e;
 
 - (void) render_x11;
+- (NSOpenGLContext *) oglContext;
 - (void) prepareContext;
 - (NSUserDefaultsController *) userDefaultsController;
 + (NSString *) decompressXML:(NSData *)xml;
 
-#ifdef USE_IPHONE
-- (BOOL)reshapeRotatedWindow;
+- (CGFloat) hackedContentScaleFactor;
+- (CGFloat) hackedContentScaleFactor:(BOOL)fonts_p;
+
+#ifdef HAVE_IPHONE
 - (void)setScreenLocked:(BOOL)locked;
 - (NSDictionary *)getGLProperties;
 - (void)addExtraRenderbuffers:(CGSize)size;
+- (NSString *)getCAGravity;
+- (void)orientationChanged;
 @property (nonatomic, assign) id<XScreenSaverViewDelegate> delegate;
-#else // !USE_IPHONE
+@property (nonatomic) BOOL ignoreRotation;
+- (BOOL)suppressRotationAnimation;
+- (BOOL)rotateTouches;
+#else // !HAVE_IPHONE
 - (NSOpenGLPixelFormat *)getGLPixelFormat;
-#endif // !USE_IPHONE
+#endif // !HAVE_IPHONE
 
-#ifdef USE_BACKBUFFER
 - (void)enableBackbuffer:(CGSize)new_backbuffer_size;
+- (void)setViewport;
 - (void)createBackbuffer:(CGSize)s;
+- (void)reshape_x11;
+#ifdef JWXYZ_QUARTZ
 - (void)drawBackbuffer;
+#endif // JWXYZ_QUARTZ
 - (void)flushBackbuffer;
-#endif // USE_BACKBUFFER
 
 @end