From http://www.jwz.org/xscreensaver/xscreensaver-5.39.tar.gz
[xscreensaver] / hacks / xanalogtv.c
index 1565c8927581b6c3f82319f4adc26b9ca099429e..dfaf05de8b66ff730aa6641eec931633ce60553a 100644 (file)
@@ -1,4 +1,4 @@
-/* xanalogtv, Copyright (c) 2003 Trevor Blackwell <tlb@tlb.org>
+/* xanalogtv, Copyright (c) 2003-2018 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
@@ -39,7 +39,7 @@
 #endif
 
 #include "screenhack.h"
-#include "xpm-pixmap.h"
+#include "ximage-loader.h"
 #include "analogtv.h"
 
 #include "images/logo-50.xpm"
@@ -82,7 +82,7 @@ struct state {
   chansetting *cs;
 
   int change_now;
-
+  int colorbars_only_p;
 };
 
 
@@ -155,6 +155,7 @@ update_smpte_colorbars(analogtv_input *input)
   ypos=ANALOGTV_V/5;
   xpos=ANALOGTV_VIS_START + ANALOGTV_VIS_LEN/2;
 
+  if (! st->colorbars_only_p)
   {
     char localname[256];
     if (gethostname (localname, sizeof (localname))==0) {
@@ -169,8 +170,9 @@ update_smpte_colorbars(analogtv_input *input)
   }
   ypos += st->ugly_font.char_h*5/2;
 
-  analogtv_draw_xpm(st->tv, input,
-                    logo_50_xpm, xpos - 100, ypos);
+  if (! st->colorbars_only_p)
+    analogtv_draw_xpm(st->tv, input,
+                      logo_50_xpm, xpos - 100, ypos);
 
   ypos += 58;
 
@@ -180,6 +182,7 @@ update_smpte_colorbars(analogtv_input *input)
   ypos += st->ugly_font.char_h*4;
 #endif
 
+  if (! st->colorbars_only_p)
   {
     char timestamp[256];
     time_t t = time ((time_t *) 0);
@@ -246,6 +249,7 @@ static const char *xanalogtv_defaults [] = {
 
 static XrmOptionDescRec xanalogtv_options [] = {
   { "-delay",          ".delay",               XrmoptionSepArg, 0 },
+  { "-colorbars-only", ".colorbarsOnly",       XrmoptionNoArg, "True" },
   ANALOGTV_OPTIONS
   { 0, 0, 0, 0 }
 };
@@ -384,26 +388,6 @@ analogtv_load_random_image(struct state *st)
 }
 
 
-#if 0
-static int
-analogtv_load_xpm(analogtv *it, analogtv_input *input, char **xpm)
-{
-  Pixmap pixmap;
-  XImage *image;
-  int width,height;
-  int rc;
-
-  pixmap=xpm_data_to_pixmap (it->dpy, it->window, xpm,
-                             &width, &height, NULL);
-  image = XGetImage(it->dpy, pixmap, 0, 0, width, height, ~0L, ZPixmap);
-  XFreePixmap(it->dpy, pixmap);
-  rc=analogtv_load_ximage(it, input, image);
-  if (image) XDestroyImage(image);
-  return rc;
-}
-#endif
-
-
 static void add_stations(struct state *st)
 {
   while (st->n_stations < MAX_STATIONS) {
@@ -421,7 +405,8 @@ static void load_station_images(struct state *st)
     analogtv_input *input = st->stations[i];
 
     st->chansettings[i].image_loaded_p = True;
-    if (i == 0) {   /* station 0 is always colorbars */
+    if (i == 0 ||   /* station 0 is always colorbars */
+        st->colorbars_only_p) {
       input->updater = update_smpte_colorbars;
       input->do_teletext=1;
     }
@@ -457,6 +442,9 @@ xanalogtv_init (Display *dpy, Window window)
   st->window = window;
   st->tv=analogtv_allocate(dpy, window);
 
+  st->colorbars_only_p =
+    get_boolean_resource(dpy, "colorbarsOnly", "ColorbarsOnly");
+
   add_stations(st);
 
   analogtv_set_defaults(st->tv, "");