From 144f58027ef4685f20e730b92ee8c746b2ef8fe8 Mon Sep 17 00:00:00 2001 From: Ivan Mahonin Date: Dec 20 2019 17:49:58 +0000 Subject: typo --- diff --git a/c/gtk3/live-inc/live-inc.c b/c/gtk3/live-inc/live-inc.c deleted file mode 100644 index 38b5fbb..0000000 --- a/c/gtk3/live-inc/live-inc.c +++ /dev/null @@ -1,65 +0,0 @@ -#include - -#define MAX_LEN 50 - - -GtkWidget *window; -int pos = 0; -int len = 0; -double px[MAX_LEN]; -double py[MAX_LEN]; - - -gboolean timeout(gpointer data) { - --len; - if (len < 0) len = 0; - gtk_widget_queue_draw(window); - return TRUE; -} - -gboolean draw(GtkWidget *widget, cairo_t *cr, gpointer data) { - cairo_set_source_rgba(cr, 0.9, 0.9, 0.9, 1.0); - cairo_paint(cr); - - cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 1.0); - cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND); - cairo_move_to(cr, px[pos], py[pos]); - for(int i = 1; i < len; ++i) { - int p = (MAX_LEN + pos - i) % MAX_LEN; - cairo_set_line_width(cr, len - i); - cairo_line_to(cr, px[p], py[p]); - cairo_stroke(cr); - cairo_move_to(cr, px[p], py[p]); - } - - return TRUE; -} - -gboolean motion(GtkWidget *widget, GdkEventMotion *event, gpointer data) { - ++pos; - ++len; - if (pos >= MAX_LEN) pos = 0; - if (len > MAX_LEN) len = MAX_LEN; - px[pos] = event->x; - py[pos] = event->y; - gtk_widget_queue_draw(window); - return TRUE; -} - -void activate(GtkApplication* app, gpointer data) { - window = gtk_application_window_new(app); - g_signal_connect(window, "draw", G_CALLBACK(draw), NULL); - g_signal_connect(window, "motion-notify-event", G_CALLBACK(motion), NULL); - gtk_widget_add_events(window, GDK_POINTER_MOTION_MASK); - gtk_window_set_default_size(GTK_WINDOW(window), 700, 500); - gtk_widget_show_all(window); - g_timeout_add(100, timeout, NULL); -} - -int main(int argc, char **argv) { - GtkApplication *application = gtk_application_new(NULL, 0); - g_signal_connect(application, "activate", G_CALLBACK(activate), NULL); - int status = g_application_run(G_APPLICATION(application), argc, argv); - g_object_unref(application); - return status; -} diff --git a/c/gtk3/live-ink/live-ink.c b/c/gtk3/live-ink/live-ink.c new file mode 100644 index 0000000..38b5fbb --- /dev/null +++ b/c/gtk3/live-ink/live-ink.c @@ -0,0 +1,65 @@ +#include + +#define MAX_LEN 50 + + +GtkWidget *window; +int pos = 0; +int len = 0; +double px[MAX_LEN]; +double py[MAX_LEN]; + + +gboolean timeout(gpointer data) { + --len; + if (len < 0) len = 0; + gtk_widget_queue_draw(window); + return TRUE; +} + +gboolean draw(GtkWidget *widget, cairo_t *cr, gpointer data) { + cairo_set_source_rgba(cr, 0.9, 0.9, 0.9, 1.0); + cairo_paint(cr); + + cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 1.0); + cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND); + cairo_move_to(cr, px[pos], py[pos]); + for(int i = 1; i < len; ++i) { + int p = (MAX_LEN + pos - i) % MAX_LEN; + cairo_set_line_width(cr, len - i); + cairo_line_to(cr, px[p], py[p]); + cairo_stroke(cr); + cairo_move_to(cr, px[p], py[p]); + } + + return TRUE; +} + +gboolean motion(GtkWidget *widget, GdkEventMotion *event, gpointer data) { + ++pos; + ++len; + if (pos >= MAX_LEN) pos = 0; + if (len > MAX_LEN) len = MAX_LEN; + px[pos] = event->x; + py[pos] = event->y; + gtk_widget_queue_draw(window); + return TRUE; +} + +void activate(GtkApplication* app, gpointer data) { + window = gtk_application_window_new(app); + g_signal_connect(window, "draw", G_CALLBACK(draw), NULL); + g_signal_connect(window, "motion-notify-event", G_CALLBACK(motion), NULL); + gtk_widget_add_events(window, GDK_POINTER_MOTION_MASK); + gtk_window_set_default_size(GTK_WINDOW(window), 700, 500); + gtk_widget_show_all(window); + g_timeout_add(100, timeout, NULL); +} + +int main(int argc, char **argv) { + GtkApplication *application = gtk_application_new(NULL, 0); + g_signal_connect(application, "activate", G_CALLBACK(activate), NULL); + int status = g_application_run(G_APPLICATION(application), argc, argv); + g_object_unref(application); + return status; +}