http://slackware.bholcomb.com/slackware/slackware-11.0/source/xap/xscreensaver/xscree...
[xscreensaver] / hacks / analogtv.h
index 54092f338be9da5b18e9ff5f4d4621ac584fc400..ad61b3d3def414610facf64a5e9b7f8e0222e9fd 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;