Added a black rectangle behind the names
[cascardo/movie.git] / gdk.c
diff --git a/gdk.c b/gdk.c
index 4c68e64..413cb49 100644 (file)
--- a/gdk.c
+++ b/gdk.c
@@ -28,6 +28,9 @@ struct ctx
   GArray *points;
   int i;
   gboolean move;
+  GdkGC *gc;
+  GdkGC *gc2;
+  PangoAttrList *list;
 };
 
 #define FILENAME "/home/cascardo/fotos/debconf.jpg"
@@ -62,7 +65,7 @@ expose (GtkWidget *widget, GdkEventExpose *event, gpointer data)
                     event->area.width, event->area.height,
                    -point.x + w/2 - event->area.x,
                    -point.y + h/2 - event->area.y,
-                   point.rx, point.ry, GDK_INTERP_HYPER);
+                   point.rx, point.ry, GDK_INTERP_BILINEAR);
   gdk_draw_pixbuf (widget->window, NULL, screen, 0, 0,
                    event->area.x, event->area.y,
                   event->area.width, event->area.height,
@@ -70,6 +73,16 @@ expose (GtkWidget *widget, GdkEventExpose *event, gpointer data)
   gdk_pixbuf_unref (screen);
   if (point.name)
     {
+      PangoLayout *layout;
+      int pw, ph;
+      layout = gtk_widget_create_pango_layout (ctx->draw, point.name);
+      pango_layout_set_attributes (layout, ctx->list);
+      pango_layout_get_pixel_size (layout, &pw, &ph);
+      gdk_draw_rectangle (widget->window, ctx->gc2, TRUE,
+                          (WIDTH - pw - 8) / 2, HEIGHT - ph - 20, pw + 8, ph);
+      gdk_draw_layout (widget->window, ctx->gc, (WIDTH - pw) / 2,
+                       HEIGHT - ph - 20, layout);
+      g_object_unref (layout);
       if (ctx->move)
         g_timeout_add (3000, queue, ctx);
     }
@@ -82,6 +95,8 @@ expose (GtkWidget *widget, GdkEventExpose *event, gpointer data)
   return FALSE;
 }
 
+#define FPF 40
+
 int
 main (int argc, char **argv)
 {
@@ -92,14 +107,17 @@ main (int argc, char **argv)
   int width, height;
   GtkWidget *window;
   struct ctx ctx;
+  GdkColor Yellow;
+  GdkColor Black;
+  PangoAttribute *attr;
   gtk_init (&argc, &argv);
   if (argc < 2)
     filename = FILENAME;
   else
     filename = argv[1];
   ctx.points = ReadPoints ("pro-gnu");
-  ctx.points = drop_dup_frames (ctx.points, 20);
-  rescale_points (ctx.points);
+  ctx.points = drop_dup_frames (ctx.points, FPF);
+  rescale_points (ctx.points, get_scales (FPF));
   ctx.picture = gdk_pixbuf_new_from_file (filename, NULL);
   ctx.i = ctx.points->len;
   colorspace = gdk_pixbuf_get_colorspace (ctx.picture);
@@ -116,6 +134,21 @@ main (int argc, char **argv)
   gtk_widget_show_all (window);
   g_signal_connect (G_OBJECT (ctx.draw), "expose_event",
                     G_CALLBACK (expose), &ctx);
+  Yellow.red = 0xFFFF;
+  Yellow.green = 0xFFFF;
+  Yellow.blue = 0;
+  Black.red = 0;
+  Black.green = 0;
+  Black.blue = 0;
+  ctx.gc = gdk_gc_new (ctx.draw->window);
+  gdk_gc_set_rgb_fg_color (ctx.gc, &Yellow);
+  ctx.gc2 = gdk_gc_new (ctx.draw->window);
+  gdk_gc_set_rgb_fg_color (ctx.gc2, &Black);
+  ctx.list = pango_attr_list_new ();
+  attr = pango_attr_size_new (32 * PANGO_SCALE);
+  pango_attr_list_insert (ctx.list, attr);
+  attr = pango_attr_weight_new (PANGO_WEIGHT_SEMIBOLD);
+  pango_attr_list_insert (ctx.list, attr);
   g_timeout_add (10, queue, &ctx);
   gtk_main ();
   gdk_pixbuf_unref (ctx.picture);