X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=gdk.c;h=98981a8811cbcbe1dd728af887f6960295515cc8;hb=e3d84ac43698bb9b4555f5e648d7bb9fff117c8b;hp=4c68e64cbf7919c8e32427a841d5c1d6ab344c9f;hpb=7713aee0ac69ed5946c7e096275a65bddd7b49a0;p=cascardo%2Fmovie.git diff --git a/gdk.c b/gdk.c index 4c68e64..98981a8 100644 --- a/gdk.c +++ b/gdk.c @@ -28,6 +28,8 @@ struct ctx GArray *points; int i; gboolean move; + GdkGC *gc; + PangoAttrList *list; }; #define FILENAME "/home/cascardo/fotos/debconf.jpg" @@ -62,7 +64,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 +72,14 @@ 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_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 +92,8 @@ expose (GtkWidget *widget, GdkEventExpose *event, gpointer data) return FALSE; } +#define FPF 40 + int main (int argc, char **argv) { @@ -92,14 +104,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 +131,20 @@ 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); + gdk_gc_set_rgb_bg_color (ctx.gc, &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);