]> Pileus Git - aweather/blob - src/gis/wms_test.c
45476c43a71ff0d0ee6750545d6661f54f801f3a
[aweather] / src / gis / wms_test.c
1 #include <gtk/gtk.h>
2 #include <gdk/gdkkeysyms.h>
3
4 #include "wms.h"
5
6 /***********
7  * Testing *
8  ***********/
9 GtkWidget *image  = NULL;
10 GtkWidget *bar    = NULL;
11
12 void done_callback(WmsCacheNode *node, gpointer user_data)
13 {
14         g_message("done_callback: %p->%p", node, node->data);
15         gtk_image_set_from_pixbuf(GTK_IMAGE(image), node->data);
16 }
17
18 void chunk_callback(gsize cur, gsize total, gpointer user_data)
19 {
20         g_message("chunk_callback: %d/%d", cur, total);
21         gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(bar), (gdouble)cur/total);
22 }
23
24 gboolean key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
25 {
26         if (event->keyval == GDK_q)
27                 gtk_main_quit();
28         return TRUE;
29 }
30
31 int main(int argc, char **argv)
32 {
33         gtk_init(&argc, &argv);
34         g_thread_init(NULL);
35
36         GtkWidget *win    = gtk_window_new(GTK_WINDOW_TOPLEVEL);
37         GtkWidget *box    = gtk_vbox_new(FALSE, 0);
38         GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
39         image = gtk_image_new();
40         bar   = gtk_progress_bar_new();
41         gtk_container_add(GTK_CONTAINER(win), box);
42         gtk_box_pack_start(GTK_BOX(box), scroll, TRUE, TRUE, 0);
43         gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll), image);
44         gtk_box_pack_start(GTK_BOX(box), bar, FALSE, FALSE, 0);
45         g_signal_connect(win, "key-press-event", G_CALLBACK(key_press_cb), NULL);
46         g_signal_connect(win, "destroy", gtk_main_quit, NULL);
47         gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
48                         GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
49
50         gdouble res = 200, lon = -121.76, lat = 46.85;
51
52         WmsInfo *info = wms_info_new_for_bmng(bmng_pixbuf_loader, bmng_pixbuf_freeer);
53         wms_info_cache(info, res, lat, lon, NULL, NULL, NULL);
54         WmsCacheNode *node = wms_info_fetch(info, res, lat, lon, NULL);
55         if (node) gtk_image_set_from_pixbuf(GTK_IMAGE(image), node->data);
56         wms_info_cache(info, res, lat, lon, NULL,           done_callback, NULL);
57         wms_info_cache(info, res, lat, lon, chunk_callback, done_callback, NULL);
58
59         //WmsInfo *info = wms_info_new_for_srtm(srtm_pixbuf_loader, srtm_pixbuf_freeer);
60         //wms_info_cache(info, res, lat, lon, chunk_callback, NULL, NULL);
61         //WmsCacheNode *node = wms_info_fetch(info, res, lat, lon, NULL);
62         //if (node) gtk_image_set_from_pixbuf(GTK_IMAGE(image), node->data);
63
64         gtk_widget_show_all(win);
65         gtk_main();
66
67         wms_info_free(info);
68
69         return 0;
70 }