From http://www.jwz.org/xscreensaver/xscreensaver-5.16.tar.gz
[xscreensaver] / hacks / analogtv.h
index 54092f338be9da5b18e9ff5f4d4621ac584fc400..01dca14d95f130ad097447a7e670f73e83c93aa4 100644 (file)
@@ -65,7 +65,12 @@ enum {
   ANALOGTV_SIGNAL_LEN=ANALOGTV_V*ANALOGTV_H,
 
   /* The number of intensity levels we deal with for gamma correction &c */
-  ANALOGTV_CV_MAX=1024
+  ANALOGTV_CV_MAX=1024,
+
+  /* MAX_LINEHEIGHT corresponds to 2400 vertical pixels, beyond which
+     it interpolates extra black lines. */
+  ANALOGTV_MAX_LINEHEIGHT=12
+
 };
 
 typedef struct analogtv_input_s {
@@ -152,9 +157,10 @@ typedef struct analogtv_s {
   XShmSegmentInfo shm_info;
 #endif
   int visdepth,visclass,visbits;
-  int red_invprec,red_shift,red_mask;
-  int green_invprec,green_shift,green_mask;
-  int blue_invprec,blue_shift,blue_mask;
+  int red_invprec, red_shift;
+  int green_invprec, green_shift;
+  int blue_invprec, blue_shift;
+  unsigned int red_mask, green_mask, blue_mask;
 
   Colormap colormap;
   int usewidth,useheight,xrepl,subwidth;
@@ -162,10 +168,6 @@ typedef struct analogtv_s {
   GC gc;
   int screen_xo,screen_yo; /* centers image in window */
 
-  void (*event_handler)(Display *dpy, XEvent *event);
-  int (*key_handler)(Display *dpy, XEvent *event,void *key_data);
-  void *key_data;
-
   int flutter_horiz_desync;
   int flutter_tint;
 
@@ -212,6 +214,11 @@ typedef struct analogtv_s {
   double rx_signal_level;
   double rx_signal[ANALOGTV_SIGNAL_LEN + 2*ANALOGTV_H];
 
+  struct {
+    int index;
+    double value;
+  } leveltable[ANALOGTV_MAX_LINEHEIGHT+1][ANALOGTV_MAX_LINEHEIGHT+1];
+
 } analogtv;
 
 
@@ -275,18 +282,31 @@ int analogtv_handle_events (analogtv *it);
 #define ANALOGTV_DEFAULTS_SHM
 #endif
 
+#ifndef USE_IPHONE
+# define ANALOGTV_DEF_BRIGHTNESS "2"
+# define ANALOGTV_DEF_CONTRAST "150"
+#else
+  /* Need to really crank this up for it to look good on the iPhone screen. */
+# define ANALOGTV_DEF_BRIGHTNESS "3"
+# define ANALOGTV_DEF_CONTRAST "1000"
+#endif
+
 #define ANALOGTV_DEFAULTS \
   "*TVColor:         70", \
   "*TVTint:          5",  \
-  "*TVBrightness:    2",  \
-  "*TVContrast:      150",\
+  "*TVBrightness:  " ANALOGTV_DEF_BRIGHTNESS,  \
+  "*TVContrast:    " ANALOGTV_DEF_CONTRAST, \
   "*Background:      Black", \
   "*use_cmap:        0",  \
   "*geometry:       800x600", \
+  "*fpsSolid:       True", \
   ANALOGTV_DEFAULTS_SHM
 
 #define ANALOGTV_OPTIONS \
-  { "-use-cmap",        ".use_cmap",  XrmoptionSepArg, 0 },
-
+  { "-use-cmap",        ".use_cmap",     XrmoptionSepArg, 0 }, \
+  { "-tv-color",        ".TVColor",      XrmoptionSepArg, 0 }, \
+  { "-tv-tint",         ".TVTint",       XrmoptionSepArg, 0 }, \
+  { "-tv-brightness",   ".TVBrightness", XrmoptionSepArg, 0 }, \
+  { "-tv-contrast",     ".TVContrast",   XrmoptionSepArg, 0 },
 
 #endif /* _XSCREENSAVER_ANALOGTV_H */