summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiv Sardi <xaiki@iruya.(none)>2006-12-08 01:10:01 +0100
committerNiv Sardi <xaiki@iruya.(none)>2006-12-08 01:10:01 +0100
commite889ec3ccb2f45738a692c39986eaedbf85613d1 (patch)
tree353ed81163b5363261b00310e704cc6dfd687d4f
Initial import
-rw-r--r--Makefile13
-rwxr-xr-xcairo-testbin0 -> 19956 bytes
-rw-r--r--cairo-test.c144
-rwxr-xr-xvon-waitbin0 -> 20505 bytes
-rw-r--r--von-wait.c151
-rw-r--r--von.oggbin0 -> 270735 bytes
6 files changed, 308 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..4236499
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,13 @@
+APPS = \
+ cairo-test \
+ von-wait
+
+CFLAGS = -g -Wall
+
+CFLAGS += `pkg-config gtk+-2.0 --cflags`
+LDFLAGS += `pkg-config gtk+-2.0 --libs`
+
+all: $(APPS)
+
+clean:
+ $(RM): $(APPS)
diff --git a/cairo-test b/cairo-test
new file mode 100755
index 0000000..14c7555
--- /dev/null
+++ b/cairo-test
Binary files differ
diff --git a/cairo-test.c b/cairo-test.c
new file mode 100644
index 0000000..f5b2272
--- /dev/null
+++ b/cairo-test.c
@@ -0,0 +1,144 @@
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+#include <cairo.h>
+#include <math.h>
+
+#define SECOND_INTERVAL 1000
+
+#define DEFAULT_WIDTH 200
+#define DEFAULT_HEIGHT 100
+
+
+gboolean on_key_press (GtkWidget *widget, GdkEventKey *key, gpointer p) {
+ if (key->type == GDK_KEY_PRESS)
+ {
+ switch (key->keyval)
+ {
+ case GDK_Escape :
+ gtk_main_quit ();
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+static void paint (GtkWidget *widget, GdkEventExpose *eev, gpointer p) {
+ gint width, height, cache;
+ cairo_t *cr;
+ gint i;
+ gchar d[2] = {'0','\0'};
+ gfloat colors[6][3] = {{0.0f, 0.0f, 1.0f},
+ {0.0f, 1.0f, 0.0f},
+ {1.0f, 0.0f, 0.0f},
+ {1.0f, 1.0f, 0.0f},
+ {1.0f, 0.0f, 1.0f},
+ {0.0f, 1.0f, 1.1f}};
+
+ width = widget->allocation.width;
+ height = widget->allocation.height;
+
+ cr = gdk_cairo_create (widget->window);
+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+
+ cairo_set_source_rgba (cr, 1.0f, 1.0f, 1.0f, 0.4f);
+
+ cairo_paint (cr);
+
+ cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_BOLD);
+
+ for (i = 0; i < 6; i++) {
+ cairo_save (cr);
+ cairo_set_font_size (cr, 10);
+ cairo_set_source_rgba (cr, colors[i][0],
+ colors[i][1],
+ colors[i][2],
+ 1.0f);
+ cairo_move_to (cr, 10*i, 10);
+ d[0] = '0' + i;
+ cairo_show_text (cr, d);
+ cairo_restore (cr);
+ }
+
+
+ cairo_save (cr);
+ cairo_set_source_rgba (cr, 1.0f, 1.0f, 0.0f, 1.0f);
+ cairo_move_to (cr, 10, 20);
+ cairo_translate (cr, width/2, height/2);
+
+
+ for ( i = 0; i < 4; i++ ) {
+ cairo_translate (cr, -width/2, -height/2);
+
+ cairo_curve_to (cr, 10, 20, 10, 10, 20, 10);
+ cairo_line_to (cr, width - 20, 10);
+
+ cairo_translate (cr, width/2, height/2);
+ cairo_rotate (cr, M_PI/2.0);
+ cache = width; width = height; height = cache;
+ }
+
+ cairo_fill_preserve (cr);
+ cairo_set_source_rgba (cr, 0.0f, 1.0f, 0.0f, 0.4f);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+
+ cairo_destroy (cr);
+}
+
+static void install_colormap (GtkWidget *w) {
+ GdkScreen* screen = gtk_widget_get_screen (w);
+ GdkColormap* colormap = gdk_screen_get_rgba_colormap (screen);
+
+ if (!colormap)
+ colormap = gdk_screen_get_rgb_colormap (screen);
+
+ gtk_widget_set_colormap (w, colormap);
+}
+
+gint main (gint argc, gchar **argv) {
+ GtkWidget *window;
+
+ gtk_init(&argc, &argv);
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_window_stick (GTK_WINDOW (window));
+ // gtk_window_set_keep_below (GTK_WINDOW (window), TRUE);
+
+ gtk_window_set_skip_taskbar_hint (GTK_WINDOW (window), TRUE);
+ gtk_window_set_skip_pager_hint (GTK_WINDOW (window), TRUE);
+ // gtk_window_set_accept_focus (GTK_WINDOW (window), FALSE);
+
+ gtk_window_set_decorated (GTK_WINDOW (window), TRUE);
+ gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
+ gtk_widget_set_app_paintable (window, TRUE);
+
+ gtk_window_set_default_size (GTK_WINDOW (window),
+ DEFAULT_WIDTH,
+ DEFAULT_HEIGHT);
+
+ install_colormap(window);
+
+ gtk_widget_add_events (window, GDK_BUTTON_PRESS_MASK);
+
+ g_signal_connect (G_OBJECT (window), "expose-event",
+ G_CALLBACK (paint),
+ NULL);
+
+ g_signal_connect (G_OBJECT (window),
+ "key-press-event",
+ G_CALLBACK (on_key_press),
+ NULL);
+
+ gtk_widget_show_all (window);
+
+ gtk_main ();
+
+ return 0;
+}
+
+
+
+
diff --git a/von-wait b/von-wait
new file mode 100755
index 0000000..df10d7a
--- /dev/null
+++ b/von-wait
Binary files differ
diff --git a/von-wait.c b/von-wait.c
new file mode 100644
index 0000000..ba2ceab
--- /dev/null
+++ b/von-wait.c
@@ -0,0 +1,151 @@
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+#include <cairo.h>
+#include <time.h>
+#include <stdlib.h>
+#include <glib/gprintf.h>
+
+#define SECOND_INTERVAL 1000
+
+#define DEFAULT_WIDTH 200
+#define DEFAULT_HEIGHT 15
+
+struct private {
+ time_t time;
+ time_t von_arrives;
+ struct tm *tm;
+};
+
+static gboolean time_handler (GtkWidget* w)
+{
+ gtk_widget_queue_draw (w);
+ return TRUE;
+}
+
+gboolean on_key_press (GtkWidget *widget, GdkEventKey *key, gpointer p) {
+ if (key->type == GDK_KEY_PRESS)
+ {
+ switch (key->keyval)
+ {
+ case GDK_Escape :
+ gtk_main_quit ();
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+static void paint (GtkWidget *widget, GdkEventExpose *eev, struct private *p) {
+ gint width, height;
+ cairo_t *cr;
+ gchar *gc_time;
+
+
+ gint sec, min, hour, day;
+
+ p->time = p->von_arrives - time(NULL);
+ p->tm = localtime (&p->time);
+
+ day = p->time / (3600*24);
+ p->time -= day*(3600*24);
+
+ hour = p->time / 3600;
+ p->time -= hour*3600;
+
+ min = p->time/60;
+ p->time -= min*60;
+
+ sec = p->time;
+
+ gc_time = g_strdup_printf("Von arrives in %02dd %02dh %02dm %02ds", day, hour, min, sec);
+
+ width = widget->allocation.width;
+ height = widget->allocation.height;
+
+ cr = gdk_cairo_create (widget->window);
+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+
+
+ cairo_set_source_rgba (cr, 1.0f, 1.0f, 1.0f, 0.4f);
+ cairo_paint (cr);
+
+ cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_BOLD);
+
+ cairo_save (cr);
+ cairo_set_font_size (cr, 10);
+ cairo_move_to (cr, 10, 10);
+ cairo_set_source_rgba (cr, 0.0f, 0.0f, 0.0f, 1.0f);
+ cairo_show_text (cr, gc_time);
+ cairo_restore (cr);
+
+ cairo_destroy (cr);
+}
+
+static void install_colormap (GtkWidget *w) {
+ GdkScreen* screen = gtk_widget_get_screen (w);
+ GdkColormap* colormap = gdk_screen_get_rgba_colormap (screen);
+
+ if (!colormap)
+ colormap = gdk_screen_get_rgb_colormap (screen);
+
+ gtk_widget_set_colormap (w, colormap);
+}
+
+gint main (gint argc, gchar **argv) {
+ GtkWidget *window;
+
+ struct private *p = malloc(sizeof(struct private));
+ struct tm von_time = {
+ .tm_min = 40,
+ .tm_hour = 9,
+ .tm_mday = 14,
+ .tm_mon = 1,
+ .tm_year = 107,
+ };
+
+ p->von_arrives = mktime(&von_time);
+
+ gtk_init(&argc, &argv);
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_window_stick (GTK_WINDOW (window));
+ gtk_window_set_keep_below (GTK_WINDOW (window), TRUE);
+
+ gtk_window_set_skip_taskbar_hint (GTK_WINDOW (window), TRUE);
+ gtk_window_set_skip_pager_hint (GTK_WINDOW (window), TRUE);
+ gtk_window_set_accept_focus (GTK_WINDOW (window), FALSE);
+
+ gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
+ gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
+ gtk_widget_set_app_paintable (window, TRUE);
+
+ gtk_window_set_default_size (GTK_WINDOW (window),
+ DEFAULT_WIDTH,
+ DEFAULT_HEIGHT);
+
+ install_colormap(window);
+
+ gtk_widget_add_events (window, GDK_BUTTON_PRESS_MASK);
+
+ g_signal_connect (G_OBJECT (window), "expose-event",
+ G_CALLBACK (paint),
+ p);
+
+ g_signal_connect (G_OBJECT (window),
+ "key-press-event",
+ G_CALLBACK (on_key_press),
+ NULL);
+
+ gtk_widget_show_all (window);
+
+ gtk_timeout_add (SECOND_INTERVAL, (GtkFunction) time_handler, window);
+
+ gtk_main ();
+
+ return 0;
+}
+
+
diff --git a/von.ogg b/von.ogg
new file mode 100644
index 0000000..e5d419e
--- /dev/null
+++ b/von.ogg
Binary files differ