http://www.jwz.org/xscreensaver/xscreensaver-5.07.tar.gz
[xscreensaver] / hacks / analogtv.h
index ff9e8db2d6b8bb8942e5298c9ee2ede36a1ef228..9c03559ca23112f6b1b0d9c3a63dbf2b32346ee1 100644 (file)
@@ -1,4 +1,4 @@
-/* analogtv, Copyright (c) 2003 Trevor Blackwell <tlb@tlb.org>
+/* analogtv, Copyright (c) 2003, 2004 Trevor Blackwell <tlb@tlb.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -65,11 +65,16 @@ 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 {
-  char signal[ANALOGTV_V+1][ANALOGTV_H];
+  signed char signal[ANALOGTV_V+1][ANALOGTV_H];
 
   int do_teletext;
 
@@ -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,8 +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 flutter_horiz_desync;
   int flutter_tint;
 
@@ -210,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;
 
 
@@ -281,6 +290,7 @@ int analogtv_handle_events (analogtv *it);
   "*Background:      Black", \
   "*use_cmap:        0",  \
   "*geometry:       800x600", \
+  "*fpsSolid:       True", \
   ANALOGTV_DEFAULTS_SHM
 
 #define ANALOGTV_OPTIONS \