Professional Documents
Culture Documents
compilar:
gcc anim1.c -lgsl -o anim1 `pkg-config --cflags --libs gtk+-3.0`
*/
#include <stdlib.h>
#include <cairo/cairo.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#define N_VERTS 2
#define WIN_WIDTH 1024
#define WIN_HEIGHT 768
struct tag_mystify_vert {
int x, y; /* x and y positions */
int vx, vy; /* x and y velocities */
double r, g, b; /* colour components */
};
mystify_vert verts[N_VERTS];
GtkWidget *darea;
void init_verts() {
int n;
for (n = 0; n < N_VERTS; n ++) {
verts[n].x = rand() % WIN_WIDTH;
verts[n].y = rand() % WIN_HEIGHT;
verts[n].vx = 0;
verts[n].vy = 0;
while (verts[n].vx == 0) {
verts[n].vx = 5 - rand() % 10;
}
while (verts[n].vy == 0) {
verts[n].vy = 5 - rand() % 10;
}
void animate_verts() {
int n;
for (n = 0; n < N_VERTS; n ++) {
verts[n].x += verts[n].vx;
verts[n].y += verts[n].vy;
}
}
n = N_VERTS - 1;
return FALSE;
}
gtk_init(&argc, &argv);
init_verts();
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
darea = gtk_drawing_area_new();
gtk_container_add(GTK_CONTAINER(window), darea);
g_signal_connect(G_OBJECT(darea), "draw", G_CALLBACK(on_draw_event), NULL);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window), WIN_WIDTH, WIN_HEIGHT);
gtk_window_set_title(GTK_WINDOW(window), "Lines");
gtk_widget_show_all(window);
gtk_main();
return 0;
}