diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2005-11-27 20:48:30 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2005-11-27 20:48:30 +0000 |
commit | afbd73263d694392402558d15a48653f593a1a47 (patch) | |
tree | f776c0225ff1baa5ca354d77f38ad8d0a88ffa21 | |
download | navit-svn-navit.tar.gz |
Initial Importnavit
git-svn-id: http://svn.code.sf.net/p/navit/code/branches/navit/navit@4 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r-- | .depend | 2649 | ||||
-rw-r--r-- | Makefile | 36 | ||||
-rw-r--r-- | block.c | 209 | ||||
-rw-r--r-- | block.h | 30 | ||||
-rw-r--r-- | command.c | 143 | ||||
-rw-r--r-- | command.h | 1 | ||||
-rw-r--r-- | compass.c | 122 | ||||
-rw-r--r-- | compass.h | 2 | ||||
-rw-r--r-- | container.h | 69 | ||||
-rw-r--r-- | coord.c | 9 | ||||
-rw-r--r-- | coord.h | 21 | ||||
-rw-r--r-- | country.c | 94 | ||||
-rw-r--r-- | country.h | 12 | ||||
-rw-r--r-- | cursor.c | 196 | ||||
-rw-r--r-- | cursor.h | 5 | ||||
-rw-r--r-- | data.h | 39 | ||||
-rw-r--r-- | data_window.c | 104 | ||||
-rw-r--r-- | data_window.h | 8 | ||||
-rw-r--r-- | data_window_int.h | 7 | ||||
-rw-r--r-- | destination.c | 622 | ||||
-rw-r--r-- | destination.h | 11 | ||||
-rw-r--r-- | display.c | 266 | ||||
-rw-r--r-- | display.h | 24 | ||||
-rw-r--r-- | draw_info.h | 5 | ||||
-rw-r--r-- | file.c | 124 | ||||
-rw-r--r-- | file.h | 18 | ||||
-rwxr-xr-x | get_map | 5 | ||||
-rwxr-xr-x | gps_emu | 19 | ||||
-rwxr-xr-x | gps_emu2 | 40 | ||||
-rwxr-xr-x | gps_emu3 | 12 | ||||
-rw-r--r-- | graphics.c | 401 | ||||
-rw-r--r-- | graphics.h | 48 | ||||
-rw-r--r-- | gtkext.h | 1 | ||||
-rw-r--r-- | locations.txt | 1 | ||||
-rw-r--r-- | log.c | 88 | ||||
-rw-r--r-- | log.h | 2 | ||||
-rw-r--r-- | main.c | 80 | ||||
-rw-r--r-- | main.h | 1 | ||||
-rw-r--r-- | map-common.c | 442 | ||||
-rw-r--r-- | map-share.h | 2 | ||||
-rw-r--r-- | map-skelimpl.c | 286 | ||||
-rw-r--r-- | map-skels.c | 184 | ||||
-rw-r--r-- | map-srv.c | 262 | ||||
-rw-r--r-- | map-stubs.c | 135 | ||||
-rw-r--r-- | map.h | 341 | ||||
-rw-r--r-- | map.idl | 25 | ||||
-rw-r--r-- | map.ior | 1 | ||||
-rw-r--r-- | map_data.c | 112 | ||||
-rw-r--r-- | map_data.h | 30 | ||||
-rw-r--r-- | mapclient.c | 103 | ||||
-rw-r--r-- | menu.c | 35 | ||||
-rw-r--r-- | menu.h | 8 | ||||
-rw-r--r-- | navigation.c | 249 | ||||
-rw-r--r-- | navigation.h | 1 | ||||
-rw-r--r-- | out | 1 | ||||
-rw-r--r-- | outt | bin | 0 -> 1233 bytes | |||
-rw-r--r-- | param.c | 46 | ||||
-rw-r--r-- | param.h | 9 | ||||
-rw-r--r-- | phrase.c | 25 | ||||
-rw-r--r-- | phrase.h | 2 | ||||
-rw-r--r-- | plugin.c | 21 | ||||
-rw-r--r-- | plugin.h | 56 | ||||
-rw-r--r-- | point.h | 9 | ||||
-rw-r--r-- | poly.c | 109 | ||||
-rw-r--r-- | poly.h | 13 | ||||
-rw-r--r-- | popup.c | 306 | ||||
-rw-r--r-- | popup.h | 22 | ||||
-rw-r--r-- | profile.c | 18 | ||||
-rw-r--r-- | route.c | 1053 | ||||
-rw-r--r-- | route.h | 48 | ||||
-rw-r--r-- | search.c | 442 | ||||
-rw-r--r-- | search.h | 30 | ||||
-rw-r--r-- | speech.c | 61 | ||||
-rw-r--r-- | speech.h | 5 | ||||
-rw-r--r-- | statusbar.h | 10 | ||||
-rw-r--r-- | street.c | 455 | ||||
-rw-r--r-- | street.h | 53 | ||||
-rw-r--r-- | street_data.h | 60 | ||||
-rw-r--r-- | street_name.c | 260 | ||||
-rw-r--r-- | street_name.h | 51 | ||||
-rw-r--r-- | toolbar.h | 3 | ||||
-rw-r--r-- | town.c | 260 | ||||
-rw-r--r-- | town.h | 27 | ||||
-rw-r--r-- | transform.c | 363 | ||||
-rw-r--r-- | transform.h | 37 | ||||
-rw-r--r-- | tree.c | 320 | ||||
-rw-r--r-- | tree.h | 13 | ||||
-rw-r--r-- | tst.c | 15 | ||||
-rw-r--r-- | util.c | 18 | ||||
-rw-r--r-- | util.h | 4 | ||||
-rw-r--r-- | vehicle.c | 216 | ||||
-rw-r--r-- | vehicle.h | 6 |
92 files changed, 12187 insertions, 0 deletions
diff --git a/.depend b/.depend new file mode 100644 index 00000000..da4dac12 --- /dev/null +++ b/.depend @@ -0,0 +1,2649 @@ +# DO NOT DELETE + +block.o: /usr/include/stdio.h /usr/include/features.h +block.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +block.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +block.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +block.o: /usr/include/bits/typesizes.h /usr/include/libio.h +block.o: /usr/include/_G_config.h /usr/include/wchar.h +block.o: /usr/include/bits/wchar.h /usr/include/gconv.h +block.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +block.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +block.o: /usr/include/string.h /usr/include/malloc.h /usr/include/assert.h +block.o: file.h param.h block.h coord.h transform.h point.h data.h +command.o: /usr/include/stdio.h /usr/include/features.h +command.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +command.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +command.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +command.o: /usr/include/bits/typesizes.h /usr/include/libio.h +command.o: /usr/include/_G_config.h /usr/include/wchar.h +command.o: /usr/include/bits/wchar.h /usr/include/gconv.h +command.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +command.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +command.o: /usr/include/string.h coord.h town.h street.h +compass.o: /usr/include/math.h /usr/include/features.h +compass.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +compass.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h +compass.o: /usr/include/bits/mathcalls.h /usr/include/stdio.h +compass.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +compass.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +compass.o: /usr/include/bits/typesizes.h /usr/include/libio.h +compass.o: /usr/include/_G_config.h /usr/include/wchar.h +compass.o: /usr/include/bits/wchar.h /usr/include/gconv.h +compass.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +compass.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +compass.o: /opt/gnome/include/glib-2.0/glib.h +compass.o: /opt/gnome/include/glib-2.0/glib/galloca.h +compass.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +compass.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +compass.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +compass.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +compass.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +compass.o: /opt/gnome/include/glib-2.0/glib/garray.h +compass.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +compass.o: /opt/gnome/include/glib-2.0/glib/gthread.h +compass.o: /opt/gnome/include/glib-2.0/glib/gerror.h +compass.o: /opt/gnome/include/glib-2.0/glib/gquark.h +compass.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +compass.o: /usr/include/signal.h /usr/include/bits/sigset.h +compass.o: /usr/include/bits/signum.h +compass.o: /opt/gnome/include/glib-2.0/glib/gcache.h +compass.o: /opt/gnome/include/glib-2.0/glib/glist.h +compass.o: /opt/gnome/include/glib-2.0/glib/gmem.h +compass.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +compass.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +compass.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +compass.o: /opt/gnome/include/glib-2.0/glib/gdate.h +compass.o: /opt/gnome/include/glib-2.0/glib/gdir.h +compass.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +compass.o: /opt/gnome/include/glib-2.0/glib/ghash.h +compass.o: /opt/gnome/include/glib-2.0/glib/ghook.h +compass.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +compass.o: /opt/gnome/include/glib-2.0/glib/gmain.h +compass.o: /opt/gnome/include/glib-2.0/glib/gslist.h +compass.o: /opt/gnome/include/glib-2.0/glib/gstring.h +compass.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +compass.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +compass.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +compass.o: /opt/gnome/include/glib-2.0/glib/gnode.h +compass.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +compass.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +compass.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +compass.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +compass.o: /opt/gnome/include/glib-2.0/glib/grand.h +compass.o: /opt/gnome/include/glib-2.0/glib/grel.h +compass.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +compass.o: /opt/gnome/include/glib-2.0/glib/gshell.h +compass.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +compass.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +compass.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +compass.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +compass.o: /opt/gnome/include/glib-2.0/glib/gtree.h +compass.o: /opt/gnome/include/glib-2.0/glib/gutils.h point.h coord.h +compass.o: graphics.h transform.h route.h vehicle.h container.h +coord.o: coord.h +country.o: /usr/include/string.h /usr/include/features.h +country.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +country.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +country.o: /usr/include/stdio.h /usr/include/bits/types.h +country.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h +country.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h +country.o: /usr/include/bits/wchar.h /usr/include/gconv.h +country.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +country.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +country.o: /opt/gnome/include/glib-2.0/glib.h +country.o: /opt/gnome/include/glib-2.0/glib/galloca.h +country.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +country.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +country.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +country.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +country.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +country.o: /opt/gnome/include/glib-2.0/glib/garray.h +country.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +country.o: /opt/gnome/include/glib-2.0/glib/gthread.h +country.o: /opt/gnome/include/glib-2.0/glib/gerror.h +country.o: /opt/gnome/include/glib-2.0/glib/gquark.h +country.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +country.o: /usr/include/signal.h /usr/include/bits/sigset.h +country.o: /usr/include/bits/signum.h +country.o: /opt/gnome/include/glib-2.0/glib/gcache.h +country.o: /opt/gnome/include/glib-2.0/glib/glist.h +country.o: /opt/gnome/include/glib-2.0/glib/gmem.h +country.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +country.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +country.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +country.o: /opt/gnome/include/glib-2.0/glib/gdate.h +country.o: /opt/gnome/include/glib-2.0/glib/gdir.h +country.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +country.o: /opt/gnome/include/glib-2.0/glib/ghash.h +country.o: /opt/gnome/include/glib-2.0/glib/ghook.h +country.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +country.o: /opt/gnome/include/glib-2.0/glib/gmain.h +country.o: /opt/gnome/include/glib-2.0/glib/gslist.h +country.o: /opt/gnome/include/glib-2.0/glib/gstring.h +country.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +country.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +country.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +country.o: /opt/gnome/include/glib-2.0/glib/gnode.h +country.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +country.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +country.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +country.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +country.o: /opt/gnome/include/glib-2.0/glib/grand.h +country.o: /opt/gnome/include/glib-2.0/glib/grel.h +country.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +country.o: /opt/gnome/include/glib-2.0/glib/gshell.h +country.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +country.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +country.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +country.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +country.o: /opt/gnome/include/glib-2.0/glib/gtree.h +country.o: /opt/gnome/include/glib-2.0/glib/gutils.h country.h +cursor.o: /usr/include/stdio.h /usr/include/features.h +cursor.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +cursor.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +cursor.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +cursor.o: /usr/include/bits/typesizes.h /usr/include/libio.h +cursor.o: /usr/include/_G_config.h /usr/include/wchar.h +cursor.o: /usr/include/bits/wchar.h /usr/include/gconv.h +cursor.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +cursor.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +cursor.o: /usr/include/stdlib.h /usr/include/string.h /usr/include/unistd.h +cursor.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h +cursor.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h +cursor.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/math.h +cursor.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h +cursor.o: /usr/include/bits/mathcalls.h /opt/gnome/include/glib-2.0/glib.h +cursor.o: /opt/gnome/include/glib-2.0/glib/galloca.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +cursor.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +cursor.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +cursor.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +cursor.o: /opt/gnome/include/glib-2.0/glib/garray.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gthread.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gerror.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gquark.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +cursor.o: /usr/include/bits/sigset.h /usr/include/bits/signum.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gcache.h +cursor.o: /opt/gnome/include/glib-2.0/glib/glist.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gmem.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gdate.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gdir.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +cursor.o: /opt/gnome/include/glib-2.0/glib/ghash.h +cursor.o: /opt/gnome/include/glib-2.0/glib/ghook.h +cursor.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gmain.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gslist.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gstring.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gnode.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +cursor.o: /opt/gnome/include/glib-2.0/glib/grand.h +cursor.o: /opt/gnome/include/glib-2.0/glib/grel.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gshell.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gtree.h +cursor.o: /opt/gnome/include/glib-2.0/glib/gutils.h coord.h transform.h +cursor.o: point.h graphics.h statusbar.h menu.h vehicle.h container.h route.h +data_window.o: /usr/include/malloc.h +data_window.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +data_window.o: /usr/include/stdio.h /usr/include/features.h +data_window.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +data_window.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +data_window.o: /usr/include/bits/typesizes.h /usr/include/libio.h +data_window.o: /usr/include/_G_config.h /usr/include/wchar.h +data_window.o: /usr/include/bits/wchar.h /usr/include/gconv.h +data_window.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +data_window.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtk.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdk.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkcolor.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdktypes.h +data_window.o: /opt/gnome/include/glib-2.0/glib.h +data_window.o: /opt/gnome/include/glib-2.0/glib/galloca.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +data_window.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gmacros.h +data_window.o: /usr/include/limits.h +data_window.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +data_window.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +data_window.o: /opt/gnome/include/glib-2.0/glib/garray.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gthread.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gerror.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gquark.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +data_window.o: /usr/include/signal.h /usr/include/bits/sigset.h +data_window.o: /usr/include/bits/signum.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gcache.h +data_window.o: /opt/gnome/include/glib-2.0/glib/glist.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gmem.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gdate.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gdir.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +data_window.o: /opt/gnome/include/glib-2.0/glib/ghash.h +data_window.o: /opt/gnome/include/glib-2.0/glib/ghook.h +data_window.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gmain.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gslist.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gstring.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gnode.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +data_window.o: /opt/gnome/include/glib-2.0/glib/grand.h +data_window.o: /opt/gnome/include/glib-2.0/glib/grel.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gshell.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gtree.h +data_window.o: /opt/gnome/include/glib-2.0/glib/gutils.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-attributes.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-font.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-coverage.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-types.h +data_window.o: /opt/gnome/include/glib-2.0/glib-object.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/genums.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +data_window.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-break.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-item.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-context.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-fontmap.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-fontset.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-engine.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-glyph.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-enum-types.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-layout.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-glyph-item.h +data_window.o: /opt/gnome/include/pango-1.0/pango/pango-tabs.h +data_window.o: /opt/gnome/lib/gtk-2.0/include/gdkconfig.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkcursor.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkdisplay.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkevents.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkdnd.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkinput.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkdrawable.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkgc.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkrgb.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-features.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-loader.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkenumtypes.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkfont.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkimage.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkkeys.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkdisplaymanager.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkpango.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkpixbuf.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkpixmap.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkproperty.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkregion.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkscreen.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkselection.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkvisual.h +data_window.o: /opt/gnome/include/gtk-2.0/gdk/gdkwindow.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccelgroup.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkenums.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccellabel.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtklabel.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkmisc.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkobject.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktypeutils.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktypebuiltins.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkdebug.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkadjustment.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkstyle.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtksettings.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkrc.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkobject.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkstate.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkrelationtype.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkwindow.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkbin.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenu.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenushell.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccelmap.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccessible.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atk.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkaction.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkcomponent.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkutil.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkdocument.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkeditabletext.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atktext.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkgobjectaccessible.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkhyperlink.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkhypertext.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkimage.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atknoopobject.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atknoopobjectfactory.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkobjectfactory.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkregistry.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkobjectfactory.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkrelation.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkrelationset.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkselection.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkstateset.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkstreamablecontent.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atktable.h +data_window.o: /opt/gnome/include/atk-1.0/atk/atkvalue.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkalignment.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkaspectframe.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkframe.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkarrow.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkbindings.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkbox.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkbbox.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkbutton.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcalendar.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtksignal.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkmarshal.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrenderer.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcelleditable.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrenderertext.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrenderertoggle.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcheckbutton.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktogglebutton.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcheckmenuitem.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenuitem.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkitem.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkclipboard.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkselection.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkclist.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkhscrollbar.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkscrollbar.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkrange.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkvscrollbar.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcolorsel.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkvbox.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcolorseldialog.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcombo.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkhbox.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkctree.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkcurve.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkdrawingarea.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkdnd.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkeditable.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkentry.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkimcontext.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkeventbox.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkfilesel.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkfixed.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkfontsel.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkgamma.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkgc.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkhandlebox.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkhbbox.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkhpaned.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkpaned.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkhruler.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkruler.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkhscale.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkscale.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkhseparator.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkseparator.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkiconfactory.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkimage.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkimagemenuitem.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkimcontextsimple.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkimmulticontext.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkinputdialog.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkinvisible.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkitemfactory.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtklayout.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtklist.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtklistitem.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkliststore.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktreemodel.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktreesortable.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkmain.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenubar.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkmessagedialog.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtknotebook.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkoldeditable.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkoptionmenu.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkpixmap.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkplug.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtksocket.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkpreview.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkprogress.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkprogressbar.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkradiobutton.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkradiomenuitem.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkscrolledwindow.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkviewport.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkseparatormenuitem.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtksizegroup.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkspinbutton.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkstock.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkstatusbar.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktable.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktearoffmenuitem.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktext.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktextbuffer.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktexttagtable.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktexttag.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktextiter.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktextchild.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktextmark.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktextview.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktipsquery.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktoolbar.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktooltips.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktree.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktreednd.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeitem.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktreemodelsort.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeselection.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeview.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeviewcolumn.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtktreestore.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkvbbox.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkversion.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkvpaned.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkvruler.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkvscale.h +data_window.o: /opt/gnome/include/gtk-2.0/gtk/gtkvseparator.h param.h +data_window.o: data_window.h data_window_int.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtk.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdk.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkcolor.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdktypes.h +destination.o: /opt/gnome/include/glib-2.0/glib.h +destination.o: /opt/gnome/include/glib-2.0/glib/galloca.h +destination.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +destination.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +destination.o: /opt/gnome/include/glib-2.0/glib/gmacros.h +destination.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +destination.o: /usr/include/limits.h /usr/include/features.h +destination.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +destination.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +destination.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +destination.o: /opt/gnome/include/glib-2.0/glib/garray.h +destination.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +destination.o: /opt/gnome/include/glib-2.0/glib/gthread.h +destination.o: /opt/gnome/include/glib-2.0/glib/gerror.h +destination.o: /opt/gnome/include/glib-2.0/glib/gquark.h +destination.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +destination.o: /usr/include/signal.h /usr/include/bits/sigset.h +destination.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +destination.o: /usr/include/bits/typesizes.h /usr/include/bits/signum.h +destination.o: /opt/gnome/include/glib-2.0/glib/gcache.h +destination.o: /opt/gnome/include/glib-2.0/glib/glist.h +destination.o: /opt/gnome/include/glib-2.0/glib/gmem.h +destination.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +destination.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +destination.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +destination.o: /opt/gnome/include/glib-2.0/glib/gdate.h +destination.o: /opt/gnome/include/glib-2.0/glib/gdir.h +destination.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +destination.o: /opt/gnome/include/glib-2.0/glib/ghash.h +destination.o: /opt/gnome/include/glib-2.0/glib/ghook.h +destination.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +destination.o: /opt/gnome/include/glib-2.0/glib/gmain.h +destination.o: /opt/gnome/include/glib-2.0/glib/gslist.h +destination.o: /opt/gnome/include/glib-2.0/glib/gstring.h +destination.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +destination.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +destination.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +destination.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +destination.o: /opt/gnome/include/glib-2.0/glib/gnode.h +destination.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +destination.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +destination.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +destination.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +destination.o: /opt/gnome/include/glib-2.0/glib/grand.h +destination.o: /opt/gnome/include/glib-2.0/glib/grel.h +destination.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +destination.o: /opt/gnome/include/glib-2.0/glib/gshell.h +destination.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +destination.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +destination.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +destination.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +destination.o: /opt/gnome/include/glib-2.0/glib/gtree.h +destination.o: /opt/gnome/include/glib-2.0/glib/gutils.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-attributes.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-font.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-coverage.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-types.h +destination.o: /opt/gnome/include/glib-2.0/glib-object.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +destination.o: /opt/gnome/include/glib-2.0/gobject/genums.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +destination.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-break.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-item.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-context.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-fontmap.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-fontset.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-engine.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-glyph.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-enum-types.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-layout.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-glyph-item.h +destination.o: /opt/gnome/include/pango-1.0/pango/pango-tabs.h +destination.o: /opt/gnome/lib/gtk-2.0/include/gdkconfig.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkcursor.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkdisplay.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkevents.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkdnd.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkinput.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkdrawable.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkgc.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkrgb.h +destination.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h +destination.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-features.h +destination.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-loader.h +destination.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkenumtypes.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkfont.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkimage.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkkeys.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkdisplaymanager.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkpango.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkpixbuf.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkpixmap.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkproperty.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkregion.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkscreen.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkselection.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkvisual.h +destination.o: /opt/gnome/include/gtk-2.0/gdk/gdkwindow.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccelgroup.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkenums.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccellabel.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtklabel.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkmisc.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkobject.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktypeutils.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktypebuiltins.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkdebug.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkadjustment.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkstyle.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtksettings.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkrc.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkobject.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkstate.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkrelationtype.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkwindow.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkbin.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenu.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenushell.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccelmap.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccessible.h +destination.o: /opt/gnome/include/atk-1.0/atk/atk.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkaction.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkcomponent.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkutil.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkdocument.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkeditabletext.h +destination.o: /opt/gnome/include/atk-1.0/atk/atktext.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkgobjectaccessible.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkhyperlink.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkhypertext.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkimage.h +destination.o: /opt/gnome/include/atk-1.0/atk/atknoopobject.h +destination.o: /opt/gnome/include/atk-1.0/atk/atknoopobjectfactory.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkobjectfactory.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkregistry.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkobjectfactory.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkrelation.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkrelationset.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkselection.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkstateset.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkstreamablecontent.h +destination.o: /opt/gnome/include/atk-1.0/atk/atktable.h +destination.o: /opt/gnome/include/atk-1.0/atk/atkvalue.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkalignment.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkaspectframe.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkframe.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkarrow.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkbindings.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkbox.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkbbox.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkbutton.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcalendar.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtksignal.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkmarshal.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrenderer.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcelleditable.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrenderertext.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrenderertoggle.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcheckbutton.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktogglebutton.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcheckmenuitem.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenuitem.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkitem.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkclipboard.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkselection.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkclist.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkhscrollbar.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkscrollbar.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkrange.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkvscrollbar.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcolorsel.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkvbox.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcolorseldialog.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcombo.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkhbox.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkctree.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkcurve.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkdrawingarea.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkdnd.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkeditable.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkentry.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkimcontext.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkeventbox.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkfilesel.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkfixed.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkfontsel.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkgamma.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkgc.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkhandlebox.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkhbbox.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkhpaned.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkpaned.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkhruler.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkruler.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkhscale.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkscale.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkhseparator.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkseparator.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkiconfactory.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkimage.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkimagemenuitem.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkimcontextsimple.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkimmulticontext.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkinputdialog.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkinvisible.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkitemfactory.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtklayout.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtklist.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtklistitem.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkliststore.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktreemodel.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktreesortable.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkmain.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenubar.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkmessagedialog.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtknotebook.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkoldeditable.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkoptionmenu.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkpixmap.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkplug.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtksocket.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkpreview.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkprogress.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkprogressbar.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkradiobutton.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkradiomenuitem.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkscrolledwindow.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkviewport.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkseparatormenuitem.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtksizegroup.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkspinbutton.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkstock.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkstatusbar.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktable.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktearoffmenuitem.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktext.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktextbuffer.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktexttagtable.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktexttag.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktextiter.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktextchild.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktextmark.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktextview.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktipsquery.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktoolbar.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktooltips.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktree.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktreednd.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeitem.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktreemodelsort.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeselection.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeview.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeviewcolumn.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtktreestore.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkvbbox.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkversion.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkvpaned.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkvruler.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkvscale.h +destination.o: /opt/gnome/include/gtk-2.0/gtk/gtkvseparator.h coord.h +destination.o: transform.h point.h block.h data_window.h country.h town.h +destination.o: street.h street_name.h gui/gtk/gtkeyboard.h cursor.h route.h +destination.o: statusbar.h /usr/include/unistd.h +destination.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h +destination.o: destination.h container.h +display.o: /usr/include/malloc.h +display.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +display.o: /usr/include/math.h /usr/include/features.h +display.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +display.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h +display.o: /usr/include/bits/mathcalls.h display.h point.h graphics.h +file.o: /usr/include/unistd.h /usr/include/features.h +file.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +file.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h +file.o: /usr/include/bits/wordsize.h +file.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +file.o: /usr/include/bits/typesizes.h /usr/include/bits/confname.h +file.o: /usr/include/string.h /usr/include/fcntl.h /usr/include/bits/fcntl.h +file.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/malloc.h +file.o: /usr/include/sys/stat.h /usr/include/bits/stat.h +file.o: /usr/include/sys/mman.h /usr/include/bits/mman.h +file.o: /usr/include/dirent.h /usr/include/bits/dirent.h /usr/include/stdio.h +file.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h +file.o: /usr/include/bits/wchar.h /usr/include/gconv.h +file.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +file.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +file.o: /opt/gnome/include/glib-2.0/glib.h +file.o: /opt/gnome/include/glib-2.0/glib/galloca.h +file.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +file.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +file.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +file.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +file.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +file.o: /opt/gnome/include/glib-2.0/glib/garray.h +file.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +file.o: /opt/gnome/include/glib-2.0/glib/gthread.h +file.o: /opt/gnome/include/glib-2.0/glib/gerror.h +file.o: /opt/gnome/include/glib-2.0/glib/gquark.h +file.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +file.o: /usr/include/bits/sigset.h /usr/include/bits/signum.h +file.o: /opt/gnome/include/glib-2.0/glib/gcache.h +file.o: /opt/gnome/include/glib-2.0/glib/glist.h +file.o: /opt/gnome/include/glib-2.0/glib/gmem.h +file.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +file.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +file.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +file.o: /opt/gnome/include/glib-2.0/glib/gdate.h +file.o: /opt/gnome/include/glib-2.0/glib/gdir.h +file.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +file.o: /opt/gnome/include/glib-2.0/glib/ghash.h +file.o: /opt/gnome/include/glib-2.0/glib/ghook.h +file.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +file.o: /opt/gnome/include/glib-2.0/glib/gmain.h +file.o: /opt/gnome/include/glib-2.0/glib/gslist.h +file.o: /opt/gnome/include/glib-2.0/glib/gstring.h +file.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +file.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +file.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +file.o: /opt/gnome/include/glib-2.0/glib/gnode.h +file.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +file.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +file.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +file.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +file.o: /opt/gnome/include/glib-2.0/glib/grand.h +file.o: /opt/gnome/include/glib-2.0/glib/grel.h +file.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +file.o: /opt/gnome/include/glib-2.0/glib/gshell.h +file.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +file.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +file.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +file.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +file.o: /opt/gnome/include/glib-2.0/glib/gtree.h +file.o: /opt/gnome/include/glib-2.0/glib/gutils.h file.h param.h +graphics.o: /opt/gnome/include/glib-2.0/glib.h +graphics.o: /opt/gnome/include/glib-2.0/glib/galloca.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +graphics.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gmacros.h +graphics.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +graphics.o: /usr/include/limits.h /usr/include/features.h +graphics.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +graphics.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +graphics.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +graphics.o: /opt/gnome/include/glib-2.0/glib/garray.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gthread.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gerror.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gquark.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +graphics.o: /usr/include/signal.h /usr/include/bits/sigset.h +graphics.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +graphics.o: /usr/include/bits/typesizes.h /usr/include/bits/signum.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gcache.h +graphics.o: /opt/gnome/include/glib-2.0/glib/glist.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gmem.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gdate.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gdir.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +graphics.o: /opt/gnome/include/glib-2.0/glib/ghash.h +graphics.o: /opt/gnome/include/glib-2.0/glib/ghook.h +graphics.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gmain.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gslist.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gstring.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +graphics.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gnode.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +graphics.o: /opt/gnome/include/glib-2.0/glib/grand.h +graphics.o: /opt/gnome/include/glib-2.0/glib/grel.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gshell.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gtree.h +graphics.o: /opt/gnome/include/glib-2.0/glib/gutils.h /usr/include/string.h +graphics.o: draw_info.h graphics.h map_data.h coord.h param.h block.h +graphics.o: transform.h point.h poly.h town.h street.h container.h +log.o: /usr/include/unistd.h /usr/include/features.h /usr/include/sys/cdefs.h +log.o: /usr/include/gnu/stubs.h /usr/include/bits/posix_opt.h +log.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +log.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +log.o: /usr/include/bits/typesizes.h /usr/include/bits/confname.h +log.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h +log.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/stdio.h +log.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h +log.o: /usr/include/bits/wchar.h /usr/include/gconv.h +log.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +log.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +log.o: /usr/include/string.h /usr/include/stdlib.h file.h param.h map_data.h +log.o: log.h +main.o: /usr/include/locale.h /usr/include/features.h +main.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +main.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +main.o: /usr/include/bits/locale.h /usr/include/stdio.h +main.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +main.o: /usr/include/bits/typesizes.h /usr/include/libio.h +main.o: /usr/include/_G_config.h /usr/include/wchar.h +main.o: /usr/include/bits/wchar.h /usr/include/gconv.h +main.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +main.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h coord.h +main.o: vehicle.h cursor.h speech.h route.h map.h +main.o: /opt/gnome/include/glib-2.0/glib.h +main.o: /opt/gnome/include/glib-2.0/glib/galloca.h +main.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +main.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +main.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +main.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +main.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +main.o: /opt/gnome/include/glib-2.0/glib/garray.h +main.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +main.o: /opt/gnome/include/glib-2.0/glib/gthread.h +main.o: /opt/gnome/include/glib-2.0/glib/gerror.h +main.o: /opt/gnome/include/glib-2.0/glib/gquark.h +main.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +main.o: /usr/include/bits/sigset.h /usr/include/bits/signum.h +main.o: /opt/gnome/include/glib-2.0/glib/gcache.h +main.o: /opt/gnome/include/glib-2.0/glib/glist.h +main.o: /opt/gnome/include/glib-2.0/glib/gmem.h +main.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +main.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +main.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +main.o: /opt/gnome/include/glib-2.0/glib/gdate.h +main.o: /opt/gnome/include/glib-2.0/glib/gdir.h +main.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +main.o: /opt/gnome/include/glib-2.0/glib/ghash.h +main.o: /opt/gnome/include/glib-2.0/glib/ghook.h +main.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +main.o: /opt/gnome/include/glib-2.0/glib/gmain.h +main.o: /opt/gnome/include/glib-2.0/glib/gslist.h +main.o: /opt/gnome/include/glib-2.0/glib/gstring.h +main.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +main.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +main.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +main.o: /opt/gnome/include/glib-2.0/glib/gnode.h +main.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +main.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +main.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +main.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +main.o: /opt/gnome/include/glib-2.0/glib/grand.h +main.o: /opt/gnome/include/glib-2.0/glib/grel.h +main.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +main.o: /opt/gnome/include/glib-2.0/glib/gshell.h +main.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +main.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +main.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +main.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +main.o: /opt/gnome/include/glib-2.0/glib/gtree.h +main.o: /opt/gnome/include/glib-2.0/glib/gutils.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orbit-types.h +main.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-util.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orbit-config.h +main.o: /opt/gnome/include/orbit-2.0/orbit/util/basic_types.h +main.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-genrand.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core-types.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-types.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode-type.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any-type.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-pobj.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment-type.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb-type.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-object.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context-type.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/allocators.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-defs.h +main.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-basics.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-interface.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orbit.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/iop-defs.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-string.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object-type.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object.h +main.o: /opt/gnome/include/glib-2.0/glib-object.h +main.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +main.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +main.o: /opt/gnome/include/glib-2.0/gobject/genums.h +main.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +main.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +main.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +main.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +main.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +main.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +main.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +main.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +main.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +main.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +main.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +main.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-policy-type.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context.h +main.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-small.h +main.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa.h +main.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-defs.h +main.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-types.h +main.o: /opt/gnome/include/orbit-2.0/orbit/poa/orbit-adaptor.h +main.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-poa-type.h +main.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-current-type.h +main.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic.h +main.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic-defs.h map_data.h +main.o: transform.h point.h popup.h plugin.h compass.h container.h +map-common.o: /usr/include/string.h /usr/include/features.h +map-common.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +map-common.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h map.h +map-common.o: /opt/gnome/include/glib-2.0/glib.h +map-common.o: /opt/gnome/include/glib-2.0/glib/galloca.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +map-common.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gmacros.h +map-common.o: /usr/include/limits.h +map-common.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +map-common.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +map-common.o: /opt/gnome/include/glib-2.0/glib/garray.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gthread.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gerror.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gquark.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +map-common.o: /usr/include/signal.h /usr/include/bits/sigset.h +map-common.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +map-common.o: /usr/include/bits/typesizes.h /usr/include/bits/signum.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gcache.h +map-common.o: /opt/gnome/include/glib-2.0/glib/glist.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gmem.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gdate.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gdir.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +map-common.o: /opt/gnome/include/glib-2.0/glib/ghash.h +map-common.o: /opt/gnome/include/glib-2.0/glib/ghook.h +map-common.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gmain.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gslist.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gstring.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +map-common.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gnode.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +map-common.o: /opt/gnome/include/glib-2.0/glib/grand.h +map-common.o: /opt/gnome/include/glib-2.0/glib/grel.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gshell.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gtree.h +map-common.o: /opt/gnome/include/glib-2.0/glib/gutils.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orbit-types.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-util.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orbit-config.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/util/basic_types.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-genrand.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core-types.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-types.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode-type.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any-type.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-pobj.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment-type.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb-type.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-object.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context-type.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/allocators.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-defs.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-basics.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-interface.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orbit.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/iop-defs.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-string.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object-type.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object.h +map-common.o: /opt/gnome/include/glib-2.0/glib-object.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/genums.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +map-common.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-policy-type.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-small.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-defs.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-types.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/poa/orbit-adaptor.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-poa-type.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-current-type.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic.h +map-common.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic-defs.h +map-skelimpl.o: map.h /opt/gnome/include/glib-2.0/glib.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/galloca.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +map-skelimpl.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gmacros.h +map-skelimpl.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +map-skelimpl.o: /usr/include/limits.h /usr/include/features.h +map-skelimpl.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +map-skelimpl.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +map-skelimpl.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/garray.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gthread.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gerror.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gquark.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +map-skelimpl.o: /usr/include/signal.h /usr/include/bits/sigset.h +map-skelimpl.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +map-skelimpl.o: /usr/include/bits/typesizes.h /usr/include/bits/signum.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gcache.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/glist.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gmem.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gdate.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gdir.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/ghash.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/ghook.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gmain.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gslist.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gstring.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +map-skelimpl.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gnode.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/grand.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/grel.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gshell.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gtree.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib/gutils.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orbit-types.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-util.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orbit-config.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/util/basic_types.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-genrand.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core-types.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-types.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode-type.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any-type.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-pobj.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment-type.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb-type.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-object.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context-type.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/allocators.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-defs.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-basics.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-interface.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orbit.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/iop-defs.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-string.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object-type.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/glib-object.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/genums.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +map-skelimpl.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-policy-type.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-small.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-defs.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-types.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/poa/orbit-adaptor.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-poa-type.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-current-type.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic.h +map-skelimpl.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic-defs.h +map-skels.o: /usr/include/string.h /usr/include/features.h +map-skels.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +map-skels.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h map.h +map-skels.o: /opt/gnome/include/glib-2.0/glib.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/galloca.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +map-skels.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +map-skels.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +map-skels.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/garray.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gthread.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gerror.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gquark.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +map-skels.o: /usr/include/signal.h /usr/include/bits/sigset.h +map-skels.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +map-skels.o: /usr/include/bits/typesizes.h /usr/include/bits/signum.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gcache.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/glist.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gmem.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gdate.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gdir.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/ghash.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/ghook.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gmain.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gslist.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gstring.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +map-skels.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gnode.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/grand.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/grel.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gshell.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gtree.h +map-skels.o: /opt/gnome/include/glib-2.0/glib/gutils.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orbit-types.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-util.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orbit-config.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/util/basic_types.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-genrand.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core-types.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-types.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode-type.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any-type.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-pobj.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment-type.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb-type.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-object.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context-type.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/allocators.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-defs.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-basics.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-interface.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orbit.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/iop-defs.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-string.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object-type.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object.h +map-skels.o: /opt/gnome/include/glib-2.0/glib-object.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/genums.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +map-skels.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-policy-type.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-small.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-defs.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-types.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/poa/orbit-adaptor.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-poa-type.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-current-type.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic.h +map-skels.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic-defs.h +map-srv.o: /usr/include/stdio.h /usr/include/features.h +map-srv.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +map-srv.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +map-srv.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +map-srv.o: /usr/include/bits/typesizes.h /usr/include/libio.h +map-srv.o: /usr/include/_G_config.h /usr/include/wchar.h +map-srv.o: /usr/include/bits/wchar.h /usr/include/gconv.h +map-srv.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +map-srv.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +map-srv.o: /usr/include/stdlib.h /usr/include/string.h /usr/include/ctype.h +map-srv.o: /usr/include/endian.h /usr/include/bits/endian.h map.h +map-srv.o: /opt/gnome/include/glib-2.0/glib.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/galloca.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +map-srv.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +map-srv.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +map-srv.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/garray.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gthread.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gerror.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gquark.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +map-srv.o: /usr/include/signal.h /usr/include/bits/sigset.h +map-srv.o: /usr/include/bits/signum.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gcache.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/glist.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gmem.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gdate.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gdir.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/ghash.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/ghook.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gmain.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gslist.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gstring.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gnode.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/grand.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/grel.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gshell.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gtree.h +map-srv.o: /opt/gnome/include/glib-2.0/glib/gutils.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orbit-types.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-util.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orbit-config.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/util/basic_types.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-genrand.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core-types.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-types.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode-type.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any-type.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-pobj.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment-type.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb-type.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-object.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context-type.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/allocators.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-defs.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-basics.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-interface.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orbit.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/iop-defs.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-string.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object-type.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object.h +map-srv.o: /opt/gnome/include/glib-2.0/glib-object.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/genums.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +map-srv.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-policy-type.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-small.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-defs.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-types.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/poa/orbit-adaptor.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-poa-type.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-current-type.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic.h +map-srv.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic-defs.h coord.h +map-srv.o: route.h transform.h point.h statusbar.h map-share.h main.h +map-srv.o: /usr/include/math.h /usr/include/bits/huge_val.h +map-srv.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h +map-stubs.o: /usr/include/string.h /usr/include/features.h +map-stubs.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +map-stubs.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h map.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/galloca.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +map-stubs.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +map-stubs.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +map-stubs.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/garray.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gthread.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gerror.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gquark.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +map-stubs.o: /usr/include/signal.h /usr/include/bits/sigset.h +map-stubs.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +map-stubs.o: /usr/include/bits/typesizes.h /usr/include/bits/signum.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gcache.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/glist.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gmem.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gdate.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gdir.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/ghash.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/ghook.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gmain.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gslist.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gstring.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +map-stubs.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gnode.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/grand.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/grel.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gshell.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gtree.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib/gutils.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orbit-types.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-util.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orbit-config.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/util/basic_types.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-genrand.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core-types.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-types.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode-type.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any-type.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-pobj.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment-type.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb-type.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-object.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context-type.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/allocators.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-defs.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-basics.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-interface.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orbit.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/iop-defs.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-string.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object-type.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object.h +map-stubs.o: /opt/gnome/include/glib-2.0/glib-object.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/genums.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +map-stubs.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-policy-type.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-small.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-defs.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-types.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/poa/orbit-adaptor.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-poa-type.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-current-type.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic.h +map-stubs.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic-defs.h +map_data.o: /usr/include/stdio.h /usr/include/features.h +map_data.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +map_data.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +map_data.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +map_data.o: /usr/include/bits/typesizes.h /usr/include/libio.h +map_data.o: /usr/include/_G_config.h /usr/include/wchar.h +map_data.o: /usr/include/bits/wchar.h /usr/include/gconv.h +map_data.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +map_data.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +map_data.o: /usr/include/stdlib.h /usr/include/string.h +map_data.o: /opt/gnome/include/glib-2.0/glib.h +map_data.o: /opt/gnome/include/glib-2.0/glib/galloca.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +map_data.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +map_data.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +map_data.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +map_data.o: /opt/gnome/include/glib-2.0/glib/garray.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gthread.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gerror.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gquark.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +map_data.o: /usr/include/signal.h /usr/include/bits/sigset.h +map_data.o: /usr/include/bits/signum.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gcache.h +map_data.o: /opt/gnome/include/glib-2.0/glib/glist.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gmem.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gdate.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gdir.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +map_data.o: /opt/gnome/include/glib-2.0/glib/ghash.h +map_data.o: /opt/gnome/include/glib-2.0/glib/ghook.h +map_data.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gmain.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gslist.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gstring.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gnode.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +map_data.o: /opt/gnome/include/glib-2.0/glib/grand.h +map_data.o: /opt/gnome/include/glib-2.0/glib/grel.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gshell.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gtree.h +map_data.o: /opt/gnome/include/glib-2.0/glib/gutils.h file.h param.h block.h +map_data.o: coord.h transform.h point.h map_data.h log.h +mapclient.o: /usr/include/stdio.h /usr/include/features.h +mapclient.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +mapclient.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +mapclient.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +mapclient.o: /usr/include/bits/typesizes.h /usr/include/libio.h +mapclient.o: /usr/include/_G_config.h /usr/include/wchar.h +mapclient.o: /usr/include/bits/wchar.h /usr/include/gconv.h +mapclient.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +mapclient.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +mapclient.o: /usr/include/stdlib.h /usr/include/string.h map.h +mapclient.o: /opt/gnome/include/glib-2.0/glib.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/galloca.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +mapclient.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +mapclient.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +mapclient.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/garray.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gthread.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gerror.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gquark.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +mapclient.o: /usr/include/signal.h /usr/include/bits/sigset.h +mapclient.o: /usr/include/bits/signum.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gcache.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/glist.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gmem.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gdate.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gdir.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/ghash.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/ghook.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gmain.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gslist.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gstring.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gnode.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/grand.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/grel.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gshell.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gtree.h +mapclient.o: /opt/gnome/include/glib-2.0/glib/gutils.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orbit-types.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-util.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orbit-config.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/util/basic_types.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-genrand.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core-types.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-types.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode-type.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any-type.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-pobj.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment-type.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb-type.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-object.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context-type.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/allocators.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-defs.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-basics.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-interface.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orbit.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/iop-defs.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-string.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object-type.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object.h +mapclient.o: /opt/gnome/include/glib-2.0/glib-object.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/genums.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +mapclient.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-policy-type.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-small.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-defs.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-types.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/poa/orbit-adaptor.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-poa-type.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-current-type.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic.h +mapclient.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic-defs.h +menu.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h +menu.o: /usr/include/gnu/stubs.h +menu.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +menu.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +menu.o: /usr/include/bits/typesizes.h /usr/include/libio.h +menu.o: /usr/include/_G_config.h /usr/include/wchar.h +menu.o: /usr/include/bits/wchar.h /usr/include/gconv.h +menu.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +menu.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +menu.o: /usr/include/string.h /usr/include/stdlib.h /usr/include/math.h +menu.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h +menu.o: /usr/include/bits/mathcalls.h /usr/include/time.h coord.h +menu.o: data_window.h route.h cursor.h menu.h command.h transform.h point.h +menu.o: street.h statusbar.h destination.h main.h container.h +navigation.o: /usr/include/math.h /usr/include/features.h +navigation.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +navigation.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h +navigation.o: /usr/include/bits/mathcalls.h /usr/include/stdlib.h +navigation.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h coord.h +navigation.o: param.h block.h transform.h point.h route.h street.h +navigation.o: street_name.h speech.h navigation.h data_window.h +param.o: /usr/include/stdio.h /usr/include/features.h +param.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +param.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +param.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +param.o: /usr/include/bits/typesizes.h /usr/include/libio.h +param.o: /usr/include/_G_config.h /usr/include/wchar.h +param.o: /usr/include/bits/wchar.h /usr/include/gconv.h +param.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +param.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +param.o: /usr/include/string.h /usr/include/malloc.h param.h +phrase.o: /usr/include/time.h /usr/include/bits/types.h +phrase.o: /usr/include/features.h /usr/include/sys/cdefs.h +phrase.o: /usr/include/gnu/stubs.h /usr/include/bits/wordsize.h +phrase.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +phrase.o: /usr/include/bits/typesizes.h coord.h route.h speech.h +plugin.o: /usr/include/stdio.h /usr/include/features.h +plugin.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +plugin.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +plugin.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +plugin.o: /usr/include/bits/typesizes.h /usr/include/libio.h +plugin.o: /usr/include/_G_config.h /usr/include/wchar.h +plugin.o: /usr/include/bits/wchar.h /usr/include/gconv.h +plugin.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +plugin.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +plugin.o: /usr/include/dlfcn.h /usr/include/bits/dlfcn.h plugin.h +poly.o: /usr/include/stdlib.h /usr/include/features.h +poly.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +poly.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +poly.o: /usr/include/assert.h coord.h map_data.h file.h param.h block.h +poly.o: transform.h point.h poly.h display.h draw_info.h data_window.h +poly.o: container.h +popup.o: /usr/include/malloc.h +popup.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +popup.o: /usr/include/string.h /usr/include/features.h +popup.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +popup.o: /usr/include/stdio.h /usr/include/bits/types.h +popup.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h +popup.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h +popup.o: /usr/include/bits/wchar.h /usr/include/gconv.h +popup.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +popup.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +popup.o: /usr/include/assert.h /opt/gnome/include/gtk-2.0/gtk/gtk.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdk.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkcolor.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdktypes.h +popup.o: /opt/gnome/include/glib-2.0/glib.h +popup.o: /opt/gnome/include/glib-2.0/glib/galloca.h +popup.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +popup.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +popup.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +popup.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +popup.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +popup.o: /opt/gnome/include/glib-2.0/glib/garray.h +popup.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +popup.o: /opt/gnome/include/glib-2.0/glib/gthread.h +popup.o: /opt/gnome/include/glib-2.0/glib/gerror.h +popup.o: /opt/gnome/include/glib-2.0/glib/gquark.h +popup.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +popup.o: /usr/include/bits/sigset.h /usr/include/bits/signum.h +popup.o: /opt/gnome/include/glib-2.0/glib/gcache.h +popup.o: /opt/gnome/include/glib-2.0/glib/glist.h +popup.o: /opt/gnome/include/glib-2.0/glib/gmem.h +popup.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +popup.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +popup.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +popup.o: /opt/gnome/include/glib-2.0/glib/gdate.h +popup.o: /opt/gnome/include/glib-2.0/glib/gdir.h +popup.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +popup.o: /opt/gnome/include/glib-2.0/glib/ghash.h +popup.o: /opt/gnome/include/glib-2.0/glib/ghook.h +popup.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +popup.o: /opt/gnome/include/glib-2.0/glib/gmain.h +popup.o: /opt/gnome/include/glib-2.0/glib/gslist.h +popup.o: /opt/gnome/include/glib-2.0/glib/gstring.h +popup.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +popup.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +popup.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +popup.o: /opt/gnome/include/glib-2.0/glib/gnode.h +popup.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +popup.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +popup.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +popup.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +popup.o: /opt/gnome/include/glib-2.0/glib/grand.h +popup.o: /opt/gnome/include/glib-2.0/glib/grel.h +popup.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +popup.o: /opt/gnome/include/glib-2.0/glib/gshell.h +popup.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +popup.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +popup.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +popup.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +popup.o: /opt/gnome/include/glib-2.0/glib/gtree.h +popup.o: /opt/gnome/include/glib-2.0/glib/gutils.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-attributes.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-font.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-coverage.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-types.h +popup.o: /opt/gnome/include/glib-2.0/glib-object.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +popup.o: /opt/gnome/include/glib-2.0/gobject/genums.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +popup.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-break.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-item.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-context.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-fontmap.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-fontset.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-engine.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-glyph.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-enum-types.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-layout.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-glyph-item.h +popup.o: /opt/gnome/include/pango-1.0/pango/pango-tabs.h +popup.o: /opt/gnome/lib/gtk-2.0/include/gdkconfig.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkcursor.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkdisplay.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkevents.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkdnd.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkinput.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkdrawable.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkgc.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkrgb.h +popup.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h +popup.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-features.h +popup.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-loader.h +popup.o: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkenumtypes.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkfont.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkimage.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkkeys.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkdisplaymanager.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkpango.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkpixbuf.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkpixmap.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkproperty.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkregion.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkscreen.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkselection.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkvisual.h +popup.o: /opt/gnome/include/gtk-2.0/gdk/gdkwindow.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccelgroup.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkenums.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccellabel.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtklabel.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkmisc.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkobject.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktypeutils.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktypebuiltins.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkdebug.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkadjustment.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkstyle.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtksettings.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkrc.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkobject.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkstate.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkrelationtype.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkwindow.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkbin.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenu.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenushell.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccelmap.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkaccessible.h +popup.o: /opt/gnome/include/atk-1.0/atk/atk.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkaction.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkcomponent.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkutil.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkdocument.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkeditabletext.h +popup.o: /opt/gnome/include/atk-1.0/atk/atktext.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkgobjectaccessible.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkhyperlink.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkhypertext.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkimage.h +popup.o: /opt/gnome/include/atk-1.0/atk/atknoopobject.h +popup.o: /opt/gnome/include/atk-1.0/atk/atknoopobjectfactory.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkobjectfactory.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkregistry.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkobjectfactory.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkrelation.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkrelationset.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkselection.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkstateset.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkstreamablecontent.h +popup.o: /opt/gnome/include/atk-1.0/atk/atktable.h +popup.o: /opt/gnome/include/atk-1.0/atk/atkvalue.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkalignment.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkaspectframe.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkframe.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkarrow.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkbindings.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkbox.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkbbox.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkbutton.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcalendar.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtksignal.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkmarshal.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrenderer.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcelleditable.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrenderertext.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrenderertoggle.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcheckbutton.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktogglebutton.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcheckmenuitem.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenuitem.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkitem.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkclipboard.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkselection.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkclist.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkhscrollbar.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkscrollbar.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkrange.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkvscrollbar.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcolorsel.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkvbox.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcolorseldialog.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcombo.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkhbox.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkctree.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkcurve.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkdrawingarea.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkdnd.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkeditable.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkentry.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkimcontext.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkeventbox.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkfilesel.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkfixed.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkfontsel.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkgamma.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkgc.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkhandlebox.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkhbbox.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkhpaned.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkpaned.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkhruler.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkruler.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkhscale.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkscale.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkhseparator.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkseparator.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkiconfactory.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkimage.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkimagemenuitem.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkimcontextsimple.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkimmulticontext.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkinputdialog.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkinvisible.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkitemfactory.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtklayout.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtklist.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtklistitem.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkliststore.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktreemodel.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktreesortable.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkmain.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkmenubar.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkmessagedialog.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtknotebook.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkoldeditable.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkoptionmenu.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkpixmap.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkplug.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtksocket.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkpreview.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkprogress.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkprogressbar.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkradiobutton.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkradiomenuitem.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkscrolledwindow.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkviewport.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkseparatormenuitem.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtksizegroup.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkspinbutton.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkstock.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkstatusbar.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktable.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktearoffmenuitem.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktext.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktextbuffer.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktexttagtable.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktexttag.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktextiter.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktextchild.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktextmark.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktextview.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktipsquery.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktoolbar.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktooltips.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktree.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktreednd.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeitem.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktreemodelsort.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeselection.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeview.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktreeviewcolumn.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtktreestore.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkvbbox.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkversion.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkvpaned.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkvruler.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkvscale.h +popup.o: /opt/gnome/include/gtk-2.0/gtk/gtkvseparator.h coord.h param.h +popup.o: map_data.h block.h transform.h point.h display.h town.h street.h +popup.o: poly.h log.h popup.h plugin.h vehicle.h route.h cursor.h statusbar.h +popup.o: container.h +profile.o: /usr/include/stdlib.h /usr/include/features.h +profile.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +profile.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +profile.o: /usr/include/sys/time.h /usr/include/bits/types.h +profile.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h +profile.o: /usr/include/time.h /usr/include/bits/time.h +profile.o: /usr/include/sys/select.h /usr/include/bits/select.h +profile.o: /usr/include/bits/sigset.h +route.o: /usr/include/stdio.h /usr/include/features.h +route.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +route.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +route.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +route.o: /usr/include/bits/typesizes.h /usr/include/libio.h +route.o: /usr/include/_G_config.h /usr/include/wchar.h +route.o: /usr/include/bits/wchar.h /usr/include/gconv.h +route.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +route.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +route.o: /usr/include/math.h /usr/include/bits/huge_val.h +route.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h +route.o: /usr/include/assert.h /usr/include/unistd.h +route.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h +route.o: /usr/include/sys/time.h /usr/include/time.h /usr/include/bits/time.h +route.o: /usr/include/sys/select.h /usr/include/bits/select.h +route.o: /usr/include/bits/sigset.h /opt/gnome/include/glib-2.0/glib.h +route.o: /opt/gnome/include/glib-2.0/glib/galloca.h +route.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +route.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +route.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +route.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +route.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +route.o: /opt/gnome/include/glib-2.0/glib/garray.h +route.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +route.o: /opt/gnome/include/glib-2.0/glib/gthread.h +route.o: /opt/gnome/include/glib-2.0/glib/gerror.h +route.o: /opt/gnome/include/glib-2.0/glib/gquark.h +route.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +route.o: /usr/include/bits/signum.h /opt/gnome/include/glib-2.0/glib/gcache.h +route.o: /opt/gnome/include/glib-2.0/glib/glist.h +route.o: /opt/gnome/include/glib-2.0/glib/gmem.h +route.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +route.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +route.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +route.o: /opt/gnome/include/glib-2.0/glib/gdate.h +route.o: /opt/gnome/include/glib-2.0/glib/gdir.h +route.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +route.o: /opt/gnome/include/glib-2.0/glib/ghash.h +route.o: /opt/gnome/include/glib-2.0/glib/ghook.h +route.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +route.o: /opt/gnome/include/glib-2.0/glib/gmain.h +route.o: /opt/gnome/include/glib-2.0/glib/gslist.h +route.o: /opt/gnome/include/glib-2.0/glib/gstring.h +route.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +route.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +route.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +route.o: /opt/gnome/include/glib-2.0/glib/gnode.h +route.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +route.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +route.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +route.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +route.o: /opt/gnome/include/glib-2.0/glib/grand.h +route.o: /opt/gnome/include/glib-2.0/glib/grel.h +route.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +route.o: /opt/gnome/include/glib-2.0/glib/gshell.h +route.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +route.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +route.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +route.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +route.o: /opt/gnome/include/glib-2.0/glib/gtree.h +route.o: /opt/gnome/include/glib-2.0/glib/gutils.h coord.h param.h map_data.h +route.o: block.h transform.h point.h street.h street_data.h display.h route.h +route.o: phrase.h navigation.h fib-1.0/fib.h +search.o: /opt/gnome/include/glib-2.0/glib.h +search.o: /opt/gnome/include/glib-2.0/glib/galloca.h +search.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +search.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +search.o: /opt/gnome/include/glib-2.0/glib/gmacros.h +search.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +search.o: /usr/include/limits.h /usr/include/features.h +search.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +search.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +search.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +search.o: /opt/gnome/include/glib-2.0/glib/garray.h +search.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +search.o: /opt/gnome/include/glib-2.0/glib/gthread.h +search.o: /opt/gnome/include/glib-2.0/glib/gerror.h +search.o: /opt/gnome/include/glib-2.0/glib/gquark.h +search.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +search.o: /usr/include/bits/sigset.h /usr/include/bits/types.h +search.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h +search.o: /usr/include/bits/signum.h +search.o: /opt/gnome/include/glib-2.0/glib/gcache.h +search.o: /opt/gnome/include/glib-2.0/glib/glist.h +search.o: /opt/gnome/include/glib-2.0/glib/gmem.h +search.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +search.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +search.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +search.o: /opt/gnome/include/glib-2.0/glib/gdate.h +search.o: /opt/gnome/include/glib-2.0/glib/gdir.h +search.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +search.o: /opt/gnome/include/glib-2.0/glib/ghash.h +search.o: /opt/gnome/include/glib-2.0/glib/ghook.h +search.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +search.o: /opt/gnome/include/glib-2.0/glib/gmain.h +search.o: /opt/gnome/include/glib-2.0/glib/gslist.h +search.o: /opt/gnome/include/glib-2.0/glib/gstring.h +search.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +search.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +search.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +search.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +search.o: /opt/gnome/include/glib-2.0/glib/gnode.h +search.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +search.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +search.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +search.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +search.o: /opt/gnome/include/glib-2.0/glib/grand.h +search.o: /opt/gnome/include/glib-2.0/glib/grel.h +search.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +search.o: /opt/gnome/include/glib-2.0/glib/gshell.h +search.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +search.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +search.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +search.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +search.o: /opt/gnome/include/glib-2.0/glib/gtree.h +search.o: /opt/gnome/include/glib-2.0/glib/gutils.h /usr/include/stdlib.h +search.o: /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h +search.o: /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h +search.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +search.o: /usr/include/string.h search.h coord.h country.h town.h street.h +search.o: street_name.h +speech.o: /usr/include/sys/types.h /usr/include/features.h +speech.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +speech.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +speech.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +speech.o: /usr/include/bits/typesizes.h /usr/include/time.h +speech.o: /usr/include/sys/socket.h /usr/include/sys/uio.h +speech.o: /usr/include/bits/uio.h /usr/include/bits/socket.h +speech.o: /usr/include/limits.h +speech.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +speech.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h +speech.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h +speech.o: /usr/include/stdint.h /usr/include/bits/wchar.h +speech.o: /usr/include/bits/in.h /usr/include/endian.h +speech.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +speech.o: /usr/include/arpa/inet.h /usr/include/unistd.h +speech.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h +speech.o: /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h +speech.o: /usr/include/wchar.h /usr/include/gconv.h +speech.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +speech.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +speech.o: /usr/include/stdlib.h /opt/gnome/include/glib-2.0/glib.h +speech.o: /opt/gnome/include/glib-2.0/glib/galloca.h +speech.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +speech.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +speech.o: /opt/gnome/include/glib-2.0/glib/gmacros.h +speech.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +speech.o: /opt/gnome/include/glib-2.0/glib/garray.h +speech.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +speech.o: /opt/gnome/include/glib-2.0/glib/gthread.h +speech.o: /opt/gnome/include/glib-2.0/glib/gerror.h +speech.o: /opt/gnome/include/glib-2.0/glib/gquark.h +speech.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +speech.o: /usr/include/bits/sigset.h /usr/include/bits/signum.h +speech.o: /opt/gnome/include/glib-2.0/glib/gcache.h +speech.o: /opt/gnome/include/glib-2.0/glib/glist.h +speech.o: /opt/gnome/include/glib-2.0/glib/gmem.h +speech.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +speech.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +speech.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +speech.o: /opt/gnome/include/glib-2.0/glib/gdate.h +speech.o: /opt/gnome/include/glib-2.0/glib/gdir.h +speech.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +speech.o: /opt/gnome/include/glib-2.0/glib/ghash.h +speech.o: /opt/gnome/include/glib-2.0/glib/ghook.h +speech.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +speech.o: /opt/gnome/include/glib-2.0/glib/gmain.h +speech.o: /opt/gnome/include/glib-2.0/glib/gslist.h +speech.o: /opt/gnome/include/glib-2.0/glib/gstring.h +speech.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +speech.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +speech.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +speech.o: /opt/gnome/include/glib-2.0/glib/gnode.h +speech.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +speech.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +speech.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +speech.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +speech.o: /opt/gnome/include/glib-2.0/glib/grand.h +speech.o: /opt/gnome/include/glib-2.0/glib/grel.h +speech.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +speech.o: /opt/gnome/include/glib-2.0/glib/gshell.h +speech.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +speech.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +speech.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +speech.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +speech.o: /opt/gnome/include/glib-2.0/glib/gtree.h +speech.o: /opt/gnome/include/glib-2.0/glib/gutils.h +speech.o: ../speechd/src/clients/libspeechd.h speech.h +street.o: /usr/include/assert.h /usr/include/features.h +street.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +street.o: /usr/include/stdio.h +street.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +street.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +street.o: /usr/include/bits/typesizes.h /usr/include/libio.h +street.o: /usr/include/_G_config.h /usr/include/wchar.h +street.o: /usr/include/bits/wchar.h /usr/include/gconv.h +street.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +street.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +street.o: /usr/include/malloc.h /usr/include/unistd.h +street.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h +street.o: /opt/gnome/include/glib-2.0/glib.h +street.o: /opt/gnome/include/glib-2.0/glib/galloca.h +street.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +street.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +street.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +street.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +street.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +street.o: /opt/gnome/include/glib-2.0/glib/garray.h +street.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +street.o: /opt/gnome/include/glib-2.0/glib/gthread.h +street.o: /opt/gnome/include/glib-2.0/glib/gerror.h +street.o: /opt/gnome/include/glib-2.0/glib/gquark.h +street.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +street.o: /usr/include/bits/sigset.h /usr/include/bits/signum.h +street.o: /opt/gnome/include/glib-2.0/glib/gcache.h +street.o: /opt/gnome/include/glib-2.0/glib/glist.h +street.o: /opt/gnome/include/glib-2.0/glib/gmem.h +street.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +street.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +street.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +street.o: /opt/gnome/include/glib-2.0/glib/gdate.h +street.o: /opt/gnome/include/glib-2.0/glib/gdir.h +street.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +street.o: /opt/gnome/include/glib-2.0/glib/ghash.h +street.o: /opt/gnome/include/glib-2.0/glib/ghook.h +street.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +street.o: /opt/gnome/include/glib-2.0/glib/gmain.h +street.o: /opt/gnome/include/glib-2.0/glib/gslist.h +street.o: /opt/gnome/include/glib-2.0/glib/gstring.h +street.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +street.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +street.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +street.o: /opt/gnome/include/glib-2.0/glib/gnode.h +street.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +street.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +street.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +street.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +street.o: /opt/gnome/include/glib-2.0/glib/grand.h +street.o: /opt/gnome/include/glib-2.0/glib/grel.h +street.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +street.o: /opt/gnome/include/glib-2.0/glib/gshell.h +street.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +street.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +street.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +street.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +street.o: /opt/gnome/include/glib-2.0/glib/gtree.h +street.o: /opt/gnome/include/glib-2.0/glib/gutils.h container.h coord.h +street.o: map_data.h file.h param.h block.h transform.h point.h route.h +street.o: street.h street_data.h street_name.h display.h draw_info.h +street.o: data_window.h data.h tree.h +street_name.o: /usr/include/stdio.h /usr/include/features.h +street_name.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +street_name.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +street_name.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +street_name.o: /usr/include/bits/typesizes.h /usr/include/libio.h +street_name.o: /usr/include/_G_config.h /usr/include/wchar.h +street_name.o: /usr/include/bits/wchar.h /usr/include/gconv.h +street_name.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +street_name.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +street_name.o: /usr/include/ctype.h /usr/include/endian.h +street_name.o: /usr/include/bits/endian.h /usr/include/string.h map_data.h +street_name.o: street_name.h file.h param.h block.h coord.h transform.h +street_name.o: point.h data.h tree.h +test.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h +test.o: /usr/include/gnu/stubs.h +test.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +test.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +test.o: /usr/include/bits/typesizes.h /usr/include/libio.h +test.o: /usr/include/_G_config.h /usr/include/wchar.h +test.o: /usr/include/bits/wchar.h /usr/include/gconv.h +test.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +test.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +test.o: search.h map_data.h +town.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h +town.o: /usr/include/gnu/stubs.h +town.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +town.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +town.o: /usr/include/bits/typesizes.h /usr/include/libio.h +town.o: /usr/include/_G_config.h /usr/include/wchar.h +town.o: /usr/include/bits/wchar.h /usr/include/gconv.h +town.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +town.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +town.o: /usr/include/string.h /usr/include/malloc.h display.h point.h coord.h +town.o: data_window.h map_data.h town.h data.h tree.h block.h transform.h +town.o: file.h param.h draw_info.h container.h util.h /usr/include/ctype.h +town.o: /usr/include/endian.h /usr/include/bits/endian.h +transform.o: /usr/include/assert.h /usr/include/features.h +transform.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +transform.o: /usr/include/stdio.h +transform.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +transform.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +transform.o: /usr/include/bits/typesizes.h /usr/include/libio.h +transform.o: /usr/include/_G_config.h /usr/include/wchar.h +transform.o: /usr/include/bits/wchar.h /usr/include/gconv.h +transform.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +transform.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +transform.o: /usr/include/math.h /usr/include/bits/huge_val.h +transform.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h +transform.o: /usr/include/limits.h +transform.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h coord.h +transform.o: transform.h point.h +tree.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h +tree.o: /usr/include/gnu/stubs.h +tree.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +tree.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +tree.o: /usr/include/bits/typesizes.h /usr/include/libio.h +tree.o: /usr/include/_G_config.h /usr/include/wchar.h +tree.o: /usr/include/bits/wchar.h /usr/include/gconv.h +tree.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +tree.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +tree.o: /usr/include/string.h file.h param.h map_data.h data.h tree.h +tst.o: /opt/gnome/include/glib-2.0/glib/gmacros.h +tst.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +tst.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +tst.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h /usr/include/limits.h +tst.o: /usr/include/features.h /usr/include/sys/cdefs.h +tst.o: /usr/include/gnu/stubs.h +tst.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +tst.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +tst.o: /opt/gnome/include/glib-2.0/glib.h +tst.o: /opt/gnome/include/glib-2.0/glib/galloca.h +tst.o: /opt/gnome/include/glib-2.0/glib/garray.h +tst.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +tst.o: /opt/gnome/include/glib-2.0/glib/gthread.h +tst.o: /opt/gnome/include/glib-2.0/glib/gerror.h +tst.o: /opt/gnome/include/glib-2.0/glib/gquark.h +tst.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +tst.o: /usr/include/bits/sigset.h /usr/include/bits/types.h +tst.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h +tst.o: /usr/include/bits/signum.h /opt/gnome/include/glib-2.0/glib/gcache.h +tst.o: /opt/gnome/include/glib-2.0/glib/glist.h +tst.o: /opt/gnome/include/glib-2.0/glib/gmem.h +tst.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +tst.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +tst.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +tst.o: /opt/gnome/include/glib-2.0/glib/gdate.h +tst.o: /opt/gnome/include/glib-2.0/glib/gdir.h +tst.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +tst.o: /opt/gnome/include/glib-2.0/glib/ghash.h +tst.o: /opt/gnome/include/glib-2.0/glib/ghook.h +tst.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +tst.o: /opt/gnome/include/glib-2.0/glib/gmain.h +tst.o: /opt/gnome/include/glib-2.0/glib/gslist.h +tst.o: /opt/gnome/include/glib-2.0/glib/gstring.h +tst.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +tst.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +tst.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +tst.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +tst.o: /opt/gnome/include/glib-2.0/glib/gnode.h +tst.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +tst.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +tst.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +tst.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +tst.o: /opt/gnome/include/glib-2.0/glib/grand.h +tst.o: /opt/gnome/include/glib-2.0/glib/grel.h +tst.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +tst.o: /opt/gnome/include/glib-2.0/glib/gshell.h +tst.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +tst.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +tst.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +tst.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +tst.o: /opt/gnome/include/glib-2.0/glib/gtree.h +tst.o: /opt/gnome/include/glib-2.0/glib/gutils.h +util.o: /usr/include/ctype.h /usr/include/features.h /usr/include/sys/cdefs.h +util.o: /usr/include/gnu/stubs.h /usr/include/bits/types.h +util.o: /usr/include/bits/wordsize.h +util.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +util.o: /usr/include/bits/typesizes.h /usr/include/endian.h +util.o: /usr/include/bits/endian.h +vehicle.o: /usr/include/stdio.h /usr/include/features.h +vehicle.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +vehicle.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +vehicle.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +vehicle.o: /usr/include/bits/typesizes.h /usr/include/libio.h +vehicle.o: /usr/include/_G_config.h /usr/include/wchar.h +vehicle.o: /usr/include/bits/wchar.h /usr/include/gconv.h +vehicle.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +vehicle.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h +vehicle.o: /usr/include/stdlib.h /usr/include/string.h /usr/include/unistd.h +vehicle.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h +vehicle.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h +vehicle.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/math.h +vehicle.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h +vehicle.o: /usr/include/bits/mathcalls.h /opt/gnome/include/glib-2.0/glib.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/galloca.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +vehicle.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gmacros.h /usr/include/limits.h +vehicle.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +vehicle.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/garray.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gthread.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gerror.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gquark.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h +vehicle.o: /usr/include/signal.h /usr/include/bits/sigset.h +vehicle.o: /usr/include/bits/signum.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gcache.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/glist.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gmem.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gdate.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gdir.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/ghash.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/ghook.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gmain.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gslist.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gstring.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gnode.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/grand.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/grel.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gshell.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gtree.h +vehicle.o: /opt/gnome/include/glib-2.0/glib/gutils.h coord.h transform.h +vehicle.o: point.h statusbar.h vehicle.h +block.o: coord.h transform.h point.h +display.o: point.h +file.o: param.h +map.o: /opt/gnome/include/glib-2.0/glib.h +map.o: /opt/gnome/include/glib-2.0/glib/galloca.h +map.o: /opt/gnome/include/glib-2.0/glib/gtypes.h +map.o: /opt/gnome/lib/glib-2.0/include/glibconfig.h +map.o: /opt/gnome/include/glib-2.0/glib/gmacros.h +map.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +map.o: /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h +map.o: /usr/include/gnu/stubs.h +map.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/limits.h +map.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/float.h +map.o: /opt/gnome/include/glib-2.0/glib/garray.h +map.o: /opt/gnome/include/glib-2.0/glib/gasyncqueue.h +map.o: /opt/gnome/include/glib-2.0/glib/gthread.h +map.o: /opt/gnome/include/glib-2.0/glib/gerror.h +map.o: /opt/gnome/include/glib-2.0/glib/gquark.h +map.o: /opt/gnome/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h +map.o: /usr/include/bits/sigset.h /usr/include/bits/types.h +map.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h +map.o: /usr/include/bits/signum.h /opt/gnome/include/glib-2.0/glib/gcache.h +map.o: /opt/gnome/include/glib-2.0/glib/glist.h +map.o: /opt/gnome/include/glib-2.0/glib/gmem.h +map.o: /opt/gnome/include/glib-2.0/glib/gcompletion.h +map.o: /opt/gnome/include/glib-2.0/glib/gconvert.h +map.o: /opt/gnome/include/glib-2.0/glib/gdataset.h +map.o: /opt/gnome/include/glib-2.0/glib/gdate.h +map.o: /opt/gnome/include/glib-2.0/glib/gdir.h +map.o: /opt/gnome/include/glib-2.0/glib/gfileutils.h +map.o: /opt/gnome/include/glib-2.0/glib/ghash.h +map.o: /opt/gnome/include/glib-2.0/glib/ghook.h +map.o: /opt/gnome/include/glib-2.0/glib/giochannel.h +map.o: /opt/gnome/include/glib-2.0/glib/gmain.h +map.o: /opt/gnome/include/glib-2.0/glib/gslist.h +map.o: /opt/gnome/include/glib-2.0/glib/gstring.h +map.o: /opt/gnome/include/glib-2.0/glib/gunicode.h +map.o: /opt/gnome/include/glib-2.0/glib/gmarkup.h +map.o: /opt/gnome/include/glib-2.0/glib/gmessages.h +map.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stdarg.h +map.o: /opt/gnome/include/glib-2.0/glib/gnode.h +map.o: /opt/gnome/include/glib-2.0/glib/gpattern.h +map.o: /opt/gnome/include/glib-2.0/glib/gprimes.h +map.o: /opt/gnome/include/glib-2.0/glib/gqsort.h +map.o: /opt/gnome/include/glib-2.0/glib/gqueue.h +map.o: /opt/gnome/include/glib-2.0/glib/grand.h +map.o: /opt/gnome/include/glib-2.0/glib/grel.h +map.o: /opt/gnome/include/glib-2.0/glib/gscanner.h +map.o: /opt/gnome/include/glib-2.0/glib/gshell.h +map.o: /opt/gnome/include/glib-2.0/glib/gspawn.h +map.o: /opt/gnome/include/glib-2.0/glib/gstrfuncs.h +map.o: /opt/gnome/include/glib-2.0/glib/gthreadpool.h +map.o: /opt/gnome/include/glib-2.0/glib/gtimer.h +map.o: /opt/gnome/include/glib-2.0/glib/gtree.h +map.o: /opt/gnome/include/glib-2.0/glib/gutils.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orbit-types.h +map.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-util.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orbit-config.h +map.o: /opt/gnome/include/orbit-2.0/orbit/util/basic_types.h +map.o: /opt/gnome/include/orbit-2.0/orbit/util/orbit-genrand.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core-types.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-types.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode-type.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any-type.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-pobj.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment-type.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb-type.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-object.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context-type.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-typecode.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/allocators.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-defs.h +map.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-basics.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-interface.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orbit.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orb-core.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/iop-defs.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-orb.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-string.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-environment.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-any.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object-type.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-object.h +map.o: /opt/gnome/include/glib-2.0/glib-object.h +map.o: /opt/gnome/include/glib-2.0/gobject/gboxed.h +map.o: /opt/gnome/include/glib-2.0/gobject/gtype.h +map.o: /opt/gnome/include/glib-2.0/gobject/genums.h +map.o: /opt/gnome/include/glib-2.0/gobject/gobject.h +map.o: /opt/gnome/include/glib-2.0/gobject/gvalue.h +map.o: /opt/gnome/include/glib-2.0/gobject/gparam.h +map.o: /opt/gnome/include/glib-2.0/gobject/gclosure.h +map.o: /opt/gnome/include/glib-2.0/gobject/gsignal.h +map.o: /opt/gnome/include/glib-2.0/gobject/gmarshal.h +map.o: /opt/gnome/include/glib-2.0/gobject/gparamspecs.h +map.o: /opt/gnome/include/glib-2.0/gobject/gsourceclosure.h +map.o: /opt/gnome/include/glib-2.0/gobject/gtypemodule.h +map.o: /opt/gnome/include/glib-2.0/gobject/gtypeplugin.h +map.o: /opt/gnome/include/glib-2.0/gobject/gvaluearray.h +map.o: /opt/gnome/include/glib-2.0/gobject/gvaluetypes.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-policy-type.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/corba-context.h +map.o: /opt/gnome/include/orbit-2.0/orbit/orb-core/orbit-small.h +map.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa.h +map.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-defs.h +map.o: /opt/gnome/include/orbit-2.0/orbit/poa/poa-types.h +map.o: /opt/gnome/include/orbit-2.0/orbit/poa/orbit-adaptor.h +map.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-poa-type.h +map.o: /opt/gnome/include/orbit-2.0/orbit/poa/portableserver-current-type.h +map.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic.h +map.o: /opt/gnome/include/orbit-2.0/orbit/dynamic/dynamic-defs.h +transform.o: point.h +util.o: /usr/include/ctype.h /usr/include/features.h /usr/include/sys/cdefs.h +util.o: /usr/include/gnu/stubs.h /usr/include/bits/types.h +util.o: /usr/include/bits/wordsize.h +util.o: /usr/lib/gcc-lib/i586-suse-linux/3.3.3/include/stddef.h +util.o: /usr/include/bits/typesizes.h /usr/include/endian.h +util.o: /usr/include/bits/endian.h diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..0352d6c4 --- /dev/null +++ b/Makefile @@ -0,0 +1,36 @@ +CFLAGS_LOCAL=-I. -I../speechd/src/clients +CFLAGS=$(CFLAGS_LOCAL) -I/usr/include/linc-1.0 $(shell pkg-config --cflags ORBit-2.0 gtk+-2.0) -g -Wall # -Werror # -O2 +LDLIBS=$(shell pkg-config --libs ORBit-2.0 gtk+-2.0 gtkglext-1.0) fib-1.0/fib.so ../speechd/src/clients/libspeechd.lo + +SUBDIRS=plugins fib-1.0 gui graphics + +OBJECTS=file.o param.o block.o display.o town.o street.o poly.o transform.o coord.o data_window.o route.o menu.o popup.o vehicle.o log.o command.o tree.o util.o map-common.o map-skels.o map-srv.o destination.o speech.o main.o phrase.o navigation.o cursor.o plugin.o map_data.o street_name.o country.o graphics.o graphics/gtk_gl_ext/gtk_gl_ext.o profile.o compass.o search.o + +all: $(SUBDIRS) map mapclient + +map: $(OBJECTS) fib-1.0/fib.so gui/gtk/gtk.o graphics/gtk_drawing_area/gtk_drawing_area.o + $(CC) -g -o map $(OBJECTS) gui/gtk/gtk.o graphics/gtk_drawing_area/gtk_drawing_area.o $(LDLIBS) +map-static: $(OBJECTS) + $(CC) -g -static -o map-static $(OBJECTS) $(LDLIBS) + +mapclient: mapclient.o map-stubs.o map-common.o + $(CC) -g -o mapclient mapclient.o map-stubs.o map-common.o $(shell pkg-config --libs ORBit-2.0) + +map-common.c map-skels.c map-stubs.c map.h: map.idl + orbit-idl-2 --skeleton-impl map.idl + +clean: + rm *.o map + + +.PHONY: $(SUBDIRS) +$(SUBDIRS): + cd $@ && make + +depend: .depend + +.depend: *.c *.h + [ -f .depend ] || touch -r Makefile .depend + makedepend -f .depend -- $(CFLAGS) -- *.c *.h + +include .depend diff --git a/block.c b/block.c new file mode 100644 index 00000000..c48ea3ff --- /dev/null +++ b/block.c @@ -0,0 +1,209 @@ +#include <stdio.h> +#include <string.h> +#include <malloc.h> +#include <assert.h> +#include "file.h" +#include "block.h" +#include "data.h" + + +struct file_private { + int binarytree; +}; + +struct block_index_item { + unsigned long blocknum; + unsigned long blocks; +}; + +struct block_index { + unsigned long blocks; + unsigned long size; + unsigned long next; + struct block_index_item list[0]; +}; + + +struct block * +block_get(unsigned char **p) +{ + struct block *ret=(struct block *)(*p); + *p += sizeof(*ret); + return ret; +} + +struct block * +block_get_byindex(struct file *file, int idx, unsigned char **p_ret) +{ + struct block_index *blk_idx; + int blk_num,max; + + blk_idx=(struct block_index *)(file->begin+0x1000); + max=(blk_idx->size-sizeof(struct block_index))/sizeof(struct block_index_item); + while (idx >= max) { + blk_idx=(struct block_index *)(file->begin+blk_idx->next*512); + idx-=max; + } + blk_num=blk_idx->list[idx].blocknum; + + *p_ret=file->begin+blk_num*512; + return block_get(p_ret); +} + +int +block_binarytree_walk(struct block **block, unsigned char **p, struct coord *c, int ign, struct block_info *blk_inf, struct transformation *t, + void *data, void(*func)(struct block_info *, unsigned char *, unsigned char *, void *)) +{ + struct coord ca[2],cb[2]; + struct block *blk; + int blk_num,val,dx,dy; + int ret=0; + + ca[0].x=c[0].x; + ca[0].y=c[0].y; + ca[1].x=c[1].x; + ca[1].y=c[1].y; + cb[0].x=c[0].x; + cb[0].y=c[0].y; + cb[1].x=c[1].x; + cb[1].y=c[1].y; + + if (*p >= (unsigned char *)(*block)+(*block)->size) { + *block=block_get_byindex(blk_inf->file, (*block)->next, p); + *p-=20; + } + blk_num=get_long(p); + val=get_long(p); + + if (blk_num != -1) + ret++; + + if (blk_num != -1 && (t == NULL || is_visible(t, c))) { + unsigned char *t,*end; + blk=block_get_byindex(blk_inf->file, blk_num, &t); + if (c[0].x != blk->c[0].x || c[0].y != blk->c[0].y || c[1].x != blk->c[1].x || c[1].y != blk->c[1].y) { + printf("ERROR3\n"); + printf("!= 0x%lx,0x%lx-0x%lx,0x%lx\n", blk->c[0].x,blk->c[0].y,blk->c[1].x,blk->c[1].y); + } + end=(unsigned char *)blk; + end+=blk->size; + blk_inf->block=blk; + blk_inf->block_number=blk_num; + (*func)(blk_inf, t, end, data); + } + + if (val != -1) { + dx=c[1].x-c[0].x; + dy=c[0].y-c[1].y; + if (dy > dx) { + ca[0].y=val; + cb[1].y=val+1; + } else { + ca[1].x=val; + cb[0].x=val+1; + } + ret+=block_binarytree_walk(block, p, ca, ign, blk_inf, t, data, func); + ret+=block_binarytree_walk(block, p, cb, ign, blk_inf, t, data, func); + } + return ret; +} + +void +block_file_private_setup(struct file *file) +{ + int len; + unsigned char *p,*str,*t; + struct file_private *file_priv; + + file_priv=malloc(sizeof(*file_priv)); + file->private=file_priv; + memset(file_priv, 0, sizeof(*file_priv)); + + p=file->begin+0x0c; + while (*p) { + str=get_string(&p); + len=get_long(&p); + t=p; + if (! strcmp(str,"binaryTree")) { + file_priv->binarytree=get_long(&t); + } + p+=len; + } +} + +void +block_foreach_visible_linear(struct block_info *blk_inf, struct transformation *t, void *data, + void(*func)(struct block_info *blk_inf, unsigned char *, unsigned char *, void *)) +{ + unsigned char *p,*start,*end; + struct block *blk; + + blk_inf->block_number=0; + p=blk_inf->file->begin+0x2000; + while (p < blk_inf->file->end) { + blk_inf->block_number++; + start=p; + end=p; + blk=block_get(&p); + end+=blk->size; + if (blk->count == -1) + break; + if (t == NULL || is_visible(t, blk->c)) { + blk_inf->block=blk; + (*func)(blk_inf, p, end, data); + } + p=start+blk->blocks*512; + } +} + +void +block_foreach_visible(struct block_info *blk_inf, struct transformation *t, int limit, void *data, + void(*func)(struct block_info *, unsigned char *, unsigned char *, void *)) +{ + struct file_private *file_priv=blk_inf->file->private; + + if (! file_priv) { + block_file_private_setup(blk_inf->file); + file_priv=blk_inf->file->private; + } + if (! file_priv->binarytree) { + block_foreach_visible_linear(blk_inf, t, data, func); + } else { + unsigned char *p,*p2; + int dummy1,dummy2,xy,i,count; + struct block *block=block_get_byindex(blk_inf->file, file_priv->binarytree, &p); + p2=p; + dummy1=get_long(&p2); + if (block->count != -1 || dummy1 != -1) { + printf("ERROR2 0x%x\n", block->count); + } + xy=1; + p=p2; + for (i = 0 ; i < limit ; i++) { + p2=p; + dummy1=get_long(&p2); + dummy2=get_long(&p2); + assert((dummy1 == -1 && dummy2 == -1) || i < 32) ; + count=block_binarytree_walk(&block, &p, block->c, 0, blk_inf, t, data, func); + } + } +} + +int +block_get_param(struct block_info *blk_inf, struct param_list *param, int count) +{ + int i=count; + param_add_hex("Number", blk_inf->block_number, ¶m, &count); + param_add_hex("Addr", (unsigned char *)blk_inf->block-blk_inf->file->begin, ¶m, &count); + param_add_hex("Blocks", blk_inf->block->blocks, ¶m, &count); + param_add_hex("Size", blk_inf->block->size, ¶m, &count); + param_add_hex("Next", blk_inf->block->next, ¶m, &count); + param_add_hex_sig("L", blk_inf->block->c[0].x, ¶m, &count); + param_add_hex_sig("T", blk_inf->block->c[0].y, ¶m, &count); + param_add_hex_sig("R", blk_inf->block->c[1].x, ¶m, &count); + param_add_hex_sig("B", blk_inf->block->c[1].y, ¶m, &count); + param_add_hex("W", blk_inf->block->c[1].x-blk_inf->block->c[0].x, ¶m, &count); + param_add_hex("H", blk_inf->block->c[0].y-blk_inf->block->c[1].y, ¶m, &count); + param_add_hex("Count", blk_inf->block->count, ¶m, &count); + return i-count; +} diff --git a/block.h b/block.h new file mode 100644 index 00000000..a65fe935 --- /dev/null +++ b/block.h @@ -0,0 +1,30 @@ +#include "coord.h" +#include "transform.h" + +struct block { + unsigned long blocks; + unsigned long size; + unsigned long next; + struct coord c[2]; + int count; +}; + +struct block_info { + struct map_data *mdata; + struct file *file; + struct block *block; + int block_number; +}; + +struct segment { + struct block_info blk_inf; + void *data[4]; +}; + +struct param_list; + +struct block * block_get(unsigned char **p); +void block_foreach_visible(struct block_info *blk_inf, struct transformation *t, int limit, void *data, + void(*func)(struct block_info *blk_inf, unsigned char *, unsigned char *, void *)); +int block_get_param(struct block_info *blk_inf, struct param_list *param, int count); +struct block *block_get_byindex(struct file *file, int idx, unsigned char **p_ret); diff --git a/command.c b/command.c new file mode 100644 index 00000000..88d26a36 --- /dev/null +++ b/command.c @@ -0,0 +1,143 @@ +#include <stdio.h> +#include <string.h> +#include "coord.h" +#include "town.h" +#include "street.h" + +/* Phonetisch + "KLEIN " -> CL + (x)(x)->x + EI:AY + E:- + F:V + G:C + H:- + I:Y + J:Y + K:C + T:D + W:V +*/ + +struct tree_hdr { + unsigned int addr; + unsigned int size; + unsigned int low; +}; + +struct tree_leaf { + unsigned int low; + unsigned int data; + unsigned char text[0]; +}; + +int +compare(char *s1, char *s2) +{ + char s1_exp, s2_exp; + for (;;) { + s1_exp=*s1++; + s2_exp=*s2++; + if (! s1_exp && ! s2_exp) + return 0; + if (s1_exp == 'A' && *s1 == 'E') { s1_exp='Ä'; s1++; } + if (s1_exp == 'O' && *s1 == 'E') { s1_exp='Ö'; s1++; } + if (s1_exp == 'U' && *s1 == 'E') { s1_exp='Ü'; s1++; } + if (s2_exp == 'A' && *s2 == 'E') { s2_exp='Ä'; s2++; } + if (s2_exp == 'O' && *s2 == 'E') { s2_exp='Ö'; s2++; } + if (s2_exp == 'U' && *s2 == 'E') { s2_exp='Ü'; s2++; } + if (s1_exp != s2_exp) + return s1_exp-s2_exp; + } +#if 0 + for (;;) { + while (*s1 && *s1 == *s2) { + s1++; + s2++; + } + if (! *s1 && ! *s2) + return 0; + if (! *s1) + return -1; + if (! *s2) + return 1; + if (*s1 < *s2 && *s2 < 0x80) + return -1; + if (*s1 > *s2 && *s1 < 0x80) + return 1; + s1_exp=*s1; + s2_exp=*s2; + if (s1_exp >= 0x80) + s1_exp=' '; + if (s2_exp >= 0x80) + s2_exp=' '; +#if 0 + if (*s1 == (unsigned char)'Ä') s1_exp='A'; + if (*s1 == (unsigned char)'Ö') s1_exp='O'; + if (*s1 == (unsigned char)'Ü') s1_exp='U'; + if (*s1 == (unsigned char)'ä') s1_exp='a'; + if (*s1 == (unsigned char)'ö') s1_exp='o'; + if (*s1 == (unsigned char)'ü') s1_exp='u'; + if (*s1 == (unsigned char)'ß') s1_exp='s'; + if (*s2 == (unsigned char)'Ä') s2_exp='A'; + if (*s2 == (unsigned char)'Ö') s2_exp='O'; + if (*s2 == (unsigned char)'Ü') s2_exp='U'; + if (*s2 == (unsigned char)'ä') s2_exp='a'; + if (*s2 == (unsigned char)'ö') s2_exp='o'; + if (*s2 == (unsigned char)'ü') s2_exp='u'; + if (*s2 == (unsigned char)'ß') s2_exp='s'; +#endif + if (s1_exp < s2_exp) + return -1; + if (s1_exp > s2_exp) + return 1; + printf("Problem %c vs %c\n", *s1, *s2); + exit(1); + } +#endif +} +void +command_goto(struct container *co, const char *arg) +{ +#if 0 + struct container *co=map->container; + struct town_list *list,*curr,*best=NULL; + int order=256; + int argc=0; + unsigned long x,y,scale; + char args[strlen(arg)+1]; + char *argv[strlen(arg)+1]; + char *tok; + + + strcpy(args, arg); + tok=strtok(args, " "); + while (tok) { + argv[argc++]=tok; + tok=strtok(NULL," "); + } + + list=NULL; + town_search_by_name(&list, co->map_data, argv[0], 0, 10000); + town_get_by_index(co->map_data, 0x311d54cb); + curr=list; + while (curr) { + if (curr->town->order < order) { + order=curr->town->order; + best=curr; + } + curr=curr->next; + } + if (best) { + printf("'%s' '%s' '%s' '%s'\n", best->town->name, best->town->district, best->town->postal_code1, best->town->postal_code2); +#if 0 + street_search_by_name(class->map_data, best->town->country, best->town->street_assoc, 0, argv[1]); +#endif + map_get_view(map, &x, &y, &scale); + x=best->town->c->x; + y=best->town->c->y; + map_set_view(map, x, y, scale); + } + town_list_free(list); +#endif +} diff --git a/command.h b/command.h new file mode 100644 index 00000000..5082fa04 --- /dev/null +++ b/command.h @@ -0,0 +1 @@ +void command_goto(struct container *co, const char *arg); diff --git a/compass.c b/compass.c new file mode 100644 index 00000000..cbfc9c68 --- /dev/null +++ b/compass.c @@ -0,0 +1,122 @@ +#include <math.h> +#include <stdio.h> +#include <glib.h> +#include "point.h" +#include "coord.h" +#include "graphics.h" +#include "transform.h" +#include "route.h" +#include "vehicle.h" +#include "container.h" + +struct compass { + struct graphics *gr; + struct graphics_gc *bg; + struct graphics_gc *white; + struct graphics_gc *green; + struct graphics_font *font; +}; + +static void +transform_rotate(struct point *center, int angle, struct point *p, int count) +{ + int i,x,y; + double dx,dy; + for (i = 0 ; i < count ; i++) + { + dx=sin(M_PI*angle/180.0); + dy=cos(M_PI*angle/180.0); + x=dy*p->x-dx*p->y; + y=dx*p->x+dy*p->y; + + p->x=center->x+x; + p->y=center->y+y; + p++; + } +} + +static void +handle(struct graphics *gr, struct graphics_gc *gc, struct point *p, int r, int dir) +{ + struct point ph[3]; + int l=r*0.4; + + ph[0].x=0; + ph[0].y=r; + ph[1].x=0; + ph[1].y=-r; + transform_rotate(p, dir, ph, 2); + gr->draw_lines(gr, gc, ph, 2); + ph[0].x=-l; + ph[0].y=-r+l; + ph[1].x=0; + ph[1].y=-r; + ph[2].x=l; + ph[2].y=-r+l; + transform_rotate(p, dir, ph, 3); + gr->draw_lines(gr, gc, ph, 3); +} + +void +compass_draw(struct compass *comp, struct container *co) +{ + struct point p; + struct coord *pos, *dest; + double *vehicle_dir,dir,distance; + int dx,dy; + char buffer[16]; + + vehicle_dir=vehicle_dir_get(co->vehicle); + comp->gr->draw_mode(comp->gr, draw_mode_begin); + p.x=0; + p.y=0; + comp->gr->draw_rectangle(comp->gr, comp->bg, &p, 60, 80); + p.x=30; + p.y=30; + comp->gr->draw_circle(comp->gr, comp->white, &p, 50); + handle(comp->gr, comp->white, &p, 20, -*vehicle_dir); + dest=route_get_destination(co->route); + if (dest) { + pos=vehicle_pos_get(co->vehicle); + dx=dest->x-pos->x; + dy=dest->y-pos->y; + dir=atan2(dx,dy)*180.0/M_PI; + printf("dx %d dy %d dir=%f vehicle_dir=%f\n", dx, dy, dir, *vehicle_dir); + dir-=*vehicle_dir; + handle(comp->gr, comp->green, &p, 20, dir); + p.x=8; + p.y=72; + distance=transform_distance(pos, dest)/1000.0; + if (distance >= 100) + sprintf(buffer,"%.0f km", distance); + else if (distance >= 10) + sprintf(buffer,"%.1f km", distance); + else + sprintf(buffer,"%.2f km", distance); + + comp->gr->draw_text(comp->gr, comp->green, NULL, comp->font, buffer, &p, 0x10000, 0); + } + comp->gr->draw_mode(comp->gr, draw_mode_end); +} + +struct compass * +compass_new(struct container *co) +{ + struct compass *this=g_new0(struct compass, 1); + struct point p; + p.x=10; + p.y=10; + this->gr=co->gra->overlay_new(co->gra, &p, 60, 80); + this->bg=this->gr->gc_new(this->gr); + this->gr->gc_set_foreground(this->bg, 0, 0, 0); + this->white=this->gr->gc_new(this->gr); + this->gr->gc_set_foreground(this->white, 0xffff, 0xffff, 0xffff); + this->gr->gc_set_linewidth(this->white, 2); + this->green=this->gr->gc_new(this->gr); + this->gr->gc_set_foreground(this->green, 0x0, 0xffff, 0x0); + this->gr->gc_set_linewidth(this->green, 2); + + this->font=this->gr->font_new(this->gr, 200); + compass_draw(this, co); + return this; +} diff --git a/compass.h b/compass.h new file mode 100644 index 00000000..3bc8ad7b --- /dev/null +++ b/compass.h @@ -0,0 +1,2 @@ +struct compass * compass_new(struct container *co); +void compass_draw(struct compass *comp, struct container *co); diff --git a/container.h b/container.h new file mode 100644 index 00000000..33433e4a --- /dev/null +++ b/container.h @@ -0,0 +1,69 @@ +enum display_index { + display_sea=0, + display_wood, + display_other, + display_other1, + display_other2, + display_other3, + display_water, + display_rail, + display_street, + display_street1, + display_street2, + display_street3, + display_street_no_pass, + display_street_route, + display_street_route_static, + display_town, + display_town1, + display_town2, + display_town3, + display_town4, + display_town5, + display_town6, + display_town7, + display_town8, + display_town9, + display_town10, + display_town11, + display_town12, + display_town13, + display_town14, + display_town15, + display_bti, + display_poi, + display_end +}; + +enum data_window_type { + data_window_type_block=0, + data_window_type_town, + data_window_type_poly, + data_window_type_street, + data_window_type_point, + data_window_type_end +}; + +struct map_flags { + int orient_north; + int track; +}; + +struct container { + struct window *win; + struct transformation *trans; + struct graphics *gra; + struct compass *compass; + struct display_list *disp[display_end]; + struct map_data *map_data; + struct menu *menu; + struct toolbar *toolbar; + struct statusbar *statusbar; + struct route *route; + struct cursor *cursor; + struct speech *speech; + struct vehicle *vehicle; + struct data_window *data_window[data_window_type_end]; + struct map_flags *flags; + struct _GtkMap *map; +}; diff --git a/coord.c b/coord.c new file mode 100644 index 00000000..8e792db8 --- /dev/null +++ b/coord.c @@ -0,0 +1,9 @@ +#include "coord.h" + +struct coord * +coord_get(unsigned char **p) +{ + struct coord *ret=(struct coord *)(*p); + *p += sizeof(*ret); + return ret; +} diff --git a/coord.h b/coord.h new file mode 100644 index 00000000..885c7919 --- /dev/null +++ b/coord.h @@ -0,0 +1,21 @@ +#ifndef COORD_H +#define COORD_H + +struct coord { + long x; + long y; +}; + +struct coord_d { + double x; + double y; +}; + +struct coord_geo { + double lng; + double lat; +}; + +struct coord * coord_get(unsigned char **p); + +#endif diff --git a/country.c b/country.c new file mode 100644 index 00000000..4f3a5d00 --- /dev/null +++ b/country.c @@ -0,0 +1,94 @@ +#include <string.h> +#include <stdio.h> +#include <glib.h> +#include "country.h" + +struct country country[]= { + {16 ,"RUS", "RU", "RUS", "Rußland"}, + {20 ,"ET", "EG", "EGY", "Ägypten"}, + {30 ,"GR", "GR", "GRC", "Griechenland"}, + {31 ,"NL", "NL", "NLD", "Niederlande"}, + {32 ,"B", "BE", "BEL", "Belgien"}, + {33 ,"F", "FR", "FRA", "Frankreich"}, + {34 ,"E", "ES", "ESP", "Spanien"}, + {36 ,"H", "HU", "HUN", "Ungarn"}, + {39 ,"I", "IT", "ITA", "Italien"}, + {40 ,"RO", "RO", "ROM", "Rumänien"}, + {41 ,"CH", "CH", "CHE", "Schweiz"}, + {43 ,"A", "AT", "AUT", "Österreich"}, + {44 ,"GB", "GB", "GBR", "Grossbritannien"}, + {45 ,"DK", "DK", "DNK", "Dänemark"}, + {47 ,"N", "NO", "NOR", "Norwegen"}, + {49 ,"D", "DE", "DEU", "Deutschland"}, + {51 ,"P", "PT", "PRT", "Portugal"}, + {52 ,"L", "LU", "LUX", "Luxemburg"}, + {71 ,"LAR", "LY", "LYB", "Libyen"}, + {76 ,"MA", "MA", "MAR", "Marokko"}, + {78 ,"TN", "TN", "TUN", "Tunesien"}, +}; + +struct country * +country_get_by_id(int id) +{ + int i; + for (i=0 ; i < sizeof(country)/sizeof(struct country); i++) { + if (id == country[i].id) { + return &country[i]; + } + } + return NULL; +} + +static int +compare(const char *name1, const char *name2, int len, int partial) +{ + if (partial) + return strncasecmp(name1, name2, len); + else + return strcasecmp(name1, name2); +} + +static int +search(int offset, const char *name, int partial, int (*func)(struct country *cou, void *data), void *data) +{ + char *col; + int i,ret,len=strlen(name); + int debug=0; + + for (i=0 ; i < sizeof(country)/sizeof(struct country); i++) { + col=G_STRUCT_MEMBER(char *,country+i,offset); + if (debug) + printf("comparing '%s'\n", col); + if (!compare(col, name, len, partial)) { + ret=(*func)(&country[i], data); + if (ret) + return 1; + } + col+=sizeof(struct country); + } + return 0; +} + +int +country_search_by_name(const char *name, int partial, int (*func)(struct country *cou, void *data), void *data) +{ + return search(G_STRUCT_OFFSET(struct country, name), name, partial, func, data); +} + +int +country_search_by_car(const char *name, int partial, int (*func)(struct country *cou, void *data), void *data) +{ + return search(G_STRUCT_OFFSET(struct country, car), name, partial, func, data); +} + +int +country_search_by_iso2(const char *name, int partial, int (*func)(struct country *cou, void *data), void *data) +{ + return search(G_STRUCT_OFFSET(struct country, iso2), name, partial, func, data); +} + +int +country_search_by_iso3(const char *name, int partial, int (*func)(struct country *cou, void *data), void *data) +{ + return search(G_STRUCT_OFFSET(struct country, iso3), name, partial, func, data); +} diff --git a/country.h b/country.h new file mode 100644 index 00000000..616a6c26 --- /dev/null +++ b/country.h @@ -0,0 +1,12 @@ +struct country { + int id; + char *car; + char *iso2; + char *iso3; + char *name; +}; +struct country * country_get_by_id(int id); +int country_search_by_name(const char *name, int partial, int (*func)(struct country *cou, void *data), void *data); +int country_search_by_car(const char *name, int partial, int (*func)(struct country *cou, void *data), void *data); +int country_search_by_iso2(const char *name, int partial, int (*func)(struct country *cou, void *data), void *data); +int country_search_by_iso3(const char *name, int partial, int (*func)(struct country *cou, void *data), void *data); diff --git a/cursor.c b/cursor.c new file mode 100644 index 00000000..1f1d99e8 --- /dev/null +++ b/cursor.c @@ -0,0 +1,196 @@ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include <math.h> +#include <glib.h> +#include "coord.h" +#include "transform.h" +#include "graphics.h" +#include "statusbar.h" +#include "menu.h" +#include "vehicle.h" +#include "container.h" + + +#include "route.h" + +struct cursor { + struct container *co; + struct graphics_gc *cursor_gc; + struct point cursor_pnt; +}; + +struct coord * +cursor_pos_get(void *t) +{ + struct cursor *this=t; + return vehicle_pos_get(this->co->vehicle); +} + +static void +cursor_draw(struct cursor *this, struct point *pnt, double *speed, double *dir) +{ + int x=this->cursor_pnt.x; + int y=this->cursor_pnt.y; + int r=12,lw=2; + double dx,dy; + double fac1,fac2; + int dir_i=*dir-this->co->trans->angle; + struct point cpnt[3]; + struct graphics *gra=this->co->gra; + + if (pnt && x == pnt->x && y == pnt->y) + return; + cpnt[0]=this->cursor_pnt; + cpnt[0].x-=r+lw; + cpnt[0].y-=r+lw; + gra->draw_restore(gra, &cpnt[0], (r+lw)*2, (r+lw)*2); + if (pnt) { + gra->draw_mode(gra, draw_mode_cursor); + this->cursor_pnt=*pnt; + x=pnt->x; + y=pnt->y; + cpnt[0].x=x; + cpnt[0].y=y; + gra->draw_circle(gra, this->cursor_gc, &cpnt[0], r*2); + if (*speed > 2.5) { + dx=sin(M_PI*dir_i/180); + dy=-cos(M_PI*dir_i/180); + + fac1=0.7*r; + fac2=0.4*r; + cpnt[0].x=x-dx*fac1+dy*fac2; + cpnt[0].y=y-dy*fac1-dx*fac2; + cpnt[1].x=x+dx*r; + cpnt[1].y=y+dy*r; + cpnt[2].x=x-dx*fac1-dy*fac2; + cpnt[2].y=y-dy*fac1+dx*fac2; + gra->draw_lines(gra, this->cursor_gc, cpnt, 3); + } else { + cpnt[1]=cpnt[0]; + gra->draw_lines(gra, this->cursor_gc, cpnt, 2); + } + gra->draw_mode(gra, draw_mode_end); + } +} + +static void +cursor_map_reposition_screen(struct cursor *this, struct coord *c, double *dir, int x_new, int y_new) +{ + struct coord c_new; + struct transformation tr; + struct point pnt; + unsigned long scale; + long x,y; + int dir_i; + struct container *co=this->co; + + if (dir) + dir_i=*dir; + else + dir_i=0; + + pnt.x=co->trans->width-x_new; + pnt.y=co->trans->height-y_new; + graphics_get_view(co, &x, &y, &scale); + tr=*this->co->trans; + transform_setup(&tr, c->x, c->y, scale, dir_i); + transform_reverse(&tr, &pnt, &c_new); + printf("%lx %lx vs %lx %lx\n", c->x, c->y, c_new.x, c_new.y); + x=c_new.x; + y=c_new.y; + transform_set_angle(co->trans,dir_i); + graphics_set_view(co, &x, &y, &scale); +} + +static void +cursor_map_reposition(struct cursor *this, struct coord *c, double *dir) +{ + unsigned long scale; + long x,y; + + if (this->co->flags->orient_north) { + graphics_set_view(this->co, &c->x, &c->y, NULL); + } else { + cursor_map_reposition_screen(this, c, dir, this->co->trans->width/2, this->co->trans->height*0.8); + } +} + +static int +cursor_map_reposition_boundary(struct cursor *this, struct coord *c, double *dir, struct point *pnt) +{ + struct point pnt_new; + struct transformation *t=this->co->trans; + + pnt_new.x=-1; + if (pnt->x < 0.1*t->width) { + pnt_new.x=0.8*t->width; + pnt_new.y=t->height/2; + } + if (pnt->x > 0.9*t->width) { + pnt_new.x=0.2*t->width; + pnt_new.y=t->height/2; + } + if (pnt->y < (this->co->flags->orient_north ? 0.1 : 0.5)*t->height) { + pnt_new.x=t->width/2; + pnt_new.y=0.8*t->height; + } + if (pnt->y > 0.9*t->height) { + pnt_new.x=t->width/2; + pnt_new.y=0.2*t->height; + } + if (pnt_new.x != -1) { + if (this->co->flags->orient_north) { + cursor_map_reposition_screen(this, c, NULL, pnt_new.x, pnt_new.y); + } else { + cursor_map_reposition(this, c, dir); + } + return 1; + } + return 0; +} + +void +cursor_update(struct cursor *this) +{ + struct point pnt; + struct coord *pos; + struct vehicle *v=this->co->vehicle; + double *dir; + + if (v) { + pos=vehicle_pos_get(v); + dir=vehicle_dir_get(v); + route_set_position(this->co->route, cursor_pos_get(this->co->cursor)); + if (!transform(this->co->trans, pos, &pnt)) { + cursor_map_reposition(this, pos, dir); + transform(this->co->trans, pos, &pnt); + } + if (pnt.x < 0 || pnt.y < 0 || pnt.x >= this->co->trans->width || pnt.y >= this->co->trans->height) { + cursor_map_reposition(this, pos, dir); + transform(this->co->trans, pos, &pnt); + } + if (cursor_map_reposition_boundary(this, pos, dir, &pnt)) + transform(this->co->trans, pos, &pnt); + cursor_draw(this, &pnt, vehicle_speed_get(v), vehicle_dir_get(v)); + } +extern void compass_draw(); + compass_draw(this->co->compass, this->co); +} + +extern void *vehicle; + +struct cursor * +cursor_new(struct container *co) +{ + struct cursor *this=g_new(struct cursor,1); + this->co=co; + this->cursor_gc=co->gra->gc_new(co->gra); + co->gra->gc_set_foreground(this->cursor_gc, 0x0000, 0x0000, 0xffff); + co->gra->gc_set_linewidth(this->cursor_gc, 2); + vehicle_callback(cursor_update, this); + return this; +} diff --git a/cursor.h b/cursor.h new file mode 100644 index 00000000..46114875 --- /dev/null +++ b/cursor.h @@ -0,0 +1,5 @@ +struct cursor; +struct container; + +struct coord * cursor_pos_get(struct cursor *this); +struct cursor *cursor_new(struct container *co); @@ -0,0 +1,39 @@ +static inline unsigned char +get_char(unsigned char **p) +{ + return *((*p)++); +} + +static inline unsigned short +get_short(unsigned char **p) { + unsigned long ret; + ret=*((unsigned short *)*p); + *p+=sizeof(unsigned short); + return ret; +} + +static inline unsigned long +get_triple(unsigned char **p) { + unsigned long ret; + ret=get_short(p); + ret|=*((*p)++) << 16; + return ret; +} + + +static inline unsigned long +get_long(unsigned char **p) { + unsigned long ret; + ret=*((unsigned int *)*p); + *p+=sizeof(unsigned int); + return ret; +} + +static inline char * +get_string(unsigned char **p) +{ + char *ret=*p; + while (**p) (*p)++; + (*p)++; + return ret; +} diff --git a/data_window.c b/data_window.c new file mode 100644 index 00000000..dfcddcc2 --- /dev/null +++ b/data_window.c @@ -0,0 +1,104 @@ +#include <malloc.h> +#include <stdio.h> +#include <gtk/gtk.h> +#include "param.h" +#include "data_window.h" +#include "data_window_int.h" + +struct data_window * +data_window(char *name, struct window *parent, void(*callback)(struct data_window *, char **cols)) +{ + struct data_window *win; + + win=malloc(sizeof(*win)); + win->window=gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_default_size(GTK_WINDOW(win->window), 320, 200); + gtk_window_set_title(GTK_WINDOW(win->window), name); + + win->scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win->scrolled_window), + GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); + gtk_container_add(GTK_CONTAINER(win->window), win->scrolled_window); + + win->clist=NULL; + win->callback=callback; + if (parent) + gtk_window_set_transient_for(GTK_WINDOW((GtkWidget *)(win->window)), GTK_WINDOW(parent)); + gtk_widget_show_all(win->window); + return win; +} + +void +data_window_begin(struct data_window *win) +{ + if (win && win->clist) { + gtk_clist_clear(GTK_CLIST(win->clist)); + gtk_clist_freeze(GTK_CLIST(win->clist)); + } +} + +static void +click_column(GtkCList *clist, int column) +{ + if (column != clist->sort_column) { + gtk_clist_set_sort_type(clist, GTK_SORT_ASCENDING); + gtk_clist_set_sort_column(clist, column); + } else { + if (clist->sort_type == GTK_SORT_ASCENDING) + gtk_clist_set_sort_type(clist, GTK_SORT_DESCENDING); + else + gtk_clist_set_sort_type(clist, GTK_SORT_ASCENDING); + } + gtk_clist_sort(clist); +} + +static void +select_row(GtkCList *clist, int row, int column, GdkEventButton *event, struct data_window *win) +{ + int i; + if (win->callback) { + char *cols[20]; + for (i=0;i<20;i++) { + gtk_clist_get_text(clist, row, i, &cols[i]); + } + win->callback(win, cols); + } +} + +void +data_window_add(struct data_window *win, struct param_list *param, int count) +{ + int i; + char *column[count+1]; + char *utf8; + if (! win->clist) { + for (i = 0 ; i < count ; i++) { + column[i]=param[i].name; + } + win->clist=gtk_clist_new_with_titles(count, column); + gtk_clist_clear(GTK_CLIST(win->clist)); + gtk_container_add(GTK_CONTAINER(win->scrolled_window), win->clist); + gtk_clist_freeze(GTK_CLIST(win->clist)); + gtk_signal_connect(GTK_OBJECT(win->clist), "click-column", GTK_SIGNAL_FUNC(click_column), NULL); + gtk_signal_connect(GTK_OBJECT(win->clist), "select-row", GTK_SIGNAL_FUNC(select_row), win); + gtk_widget_show_all(win->window); + } + for (i = 0 ; i < count ; i++) { + utf8=g_locale_to_utf8(param[i].value,-1,NULL,NULL,NULL); + column[i]=utf8; + } + column[i]=NULL; + gtk_clist_append(GTK_CLIST(win->clist), column); + for (i = 0 ; i < count ; i++) { + g_free(column[i]); + } +} + +void +data_window_end(struct data_window *win) +{ + if (win && win->clist) { + gtk_clist_thaw(GTK_CLIST(win->clist)); + gtk_clist_columns_autosize (GTK_CLIST(win->clist)); + } +} diff --git a/data_window.h b/data_window.h new file mode 100644 index 00000000..86a412bb --- /dev/null +++ b/data_window.h @@ -0,0 +1,8 @@ +struct data_window; +struct param_list; +struct window; + +struct data_window *data_window(char *name, struct window *parent, void(*callback)(struct data_window *, char **cols)); +void data_window_add(struct data_window *win, struct param_list *param, int count); +void data_window_begin(struct data_window *win); +void data_window_end(struct data_window *win); diff --git a/data_window_int.h b/data_window_int.h new file mode 100644 index 00000000..c7922c2d --- /dev/null +++ b/data_window_int.h @@ -0,0 +1,7 @@ + +struct data_window { + GtkWidget *window; + GtkWidget *scrolled_window; + GtkWidget *clist; + void(*callback)(struct data_window *, char **cols); +}; diff --git a/destination.c b/destination.c new file mode 100644 index 00000000..9cced769 --- /dev/null +++ b/destination.c @@ -0,0 +1,622 @@ +#include <gtk/gtk.h> +#include "coord.h" +#include "transform.h" +#include "block.h" +#include "data_window.h" +#include "country.h" +#include "town.h" +#include "street.h" +#include "street_name.h" +#include "gui/gtk/gtkeyboard.h" +#include "cursor.h" +#include "route.h" +#include "statusbar.h" +#include "unistd.h" +#include "destination.h" +#include "coord.h" +#include "container.h" + +extern gint track_focus(gpointer data); + + + +GtkWidget *entry_country, *entry_postal, *entry_city, *entry_district; +GtkWidget *entry_street, *entry_number; +GtkWidget *listbox; +int row_count=8; + +int selected; + +struct search_param { + struct map_data *map_data; + const char *country; + GHashTable *country_hash; + const char *town; + GHashTable *town_hash; + GHashTable *district_hash; + const char *street; + GHashTable *street_hash; + const char *number; + int number_low, number_high; + GtkWidget *clist; + int count; +} search_param2; + +struct destination { + struct town *town; + struct street_name *street_name; + struct coord *c; +}; + +struct country_list *country_list; + +static void +select_row(GtkCList *clist, int row, int column, GdkEventButton *event, struct data_window *win) +{ + selected=row; + printf("Selected %d\n", row); +} + +int +destination_set(struct container *co, enum destination_type type, char *text, struct coord *pos) +{ + route_set_position(co->route, cursor_pos_get(co->cursor)); + route_set_destination(co->route, pos); + graphics_redraw(co); + if (co->statusbar && co->statusbar->statusbar_route_update) + co->statusbar->statusbar_route_update(co->statusbar, co->route); + return 0; +} + +int +get_position(struct search_param *search, struct coord *c) +{ + struct destination *dest; + + if (selected == -1) + selected=0; + dest=gtk_clist_get_row_data (GTK_CLIST(search->clist), selected); + + printf("row %d dest %p dest:0x%lx,0x%lx\n", selected, dest, dest->c->x, dest->c->y); + *c=*dest->c; + return 0; +} + +void button_map(GtkWidget *widget, struct container *co) +{ + unsigned long scale; + struct coord c; + + if (!get_position(&search_param2, &c)) { + graphics_set_view(co, &c.x, &c.y, NULL); + } +} + +void button_destination(GtkWidget *widget, struct container *co) +{ + struct coord c; + + if (!get_position(&search_param2, &c)) { + route_set_position(co->route, cursor_pos_get(co->cursor)); + route_set_destination(co->route, &c); + graphics_redraw(co); + } +} + +struct dest_town { + int country; + int assoc; + char *name; + char postal_code[16]; + struct town town; +}; + +guint +destination_town_hash(gconstpointer key) +{ + const struct dest_town *hash=key; + gconstpointer hashkey=(gconstpointer)(hash->country^hash->assoc); + return g_direct_hash(hashkey); +} + +gboolean +destination_town_equal(gconstpointer a, gconstpointer b) +{ + const struct dest_town *t_a=a; + const struct dest_town *t_b=b; + if (t_a->assoc == t_b->assoc && t_a->country == t_b->country) { + if (t_a->name && t_b->name && strcmp(t_a->name, t_b->name)) + return FALSE; + return TRUE; + } + return FALSE; +} + +GHashTable * +destination_town_new(void) +{ + return g_hash_table_new_full(destination_town_hash, destination_town_equal, NULL, g_free); +} + +void +destination_town_set(const struct dest_town *town, char **rows, int full) +{ + char country[32]; + struct country *cou; + if ((cou=country_get_by_id(town->country))) { + rows[1]=cou->car; + } else { + sprintf(country,"(%d)", town->country); + rows[1]=country; + } + if (full) { + rows[4]=(char *)(town->town.postal_code2); + rows[5]=g_convert(town->town.name,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + if (town->town.district[0]) + rows[6]=g_convert(town->town.district,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + else + rows[6]=NULL; + } else { + rows[4]=(char *)(town->postal_code); + rows[5]=g_convert(town->name,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + } +} + +void +destination_town_show(gpointer key, gpointer value, gpointer user_data) +{ + struct dest_town *town=value; + struct search_param *search=(struct search_param *)user_data; + char *rows[9]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; + int row; + + if (search->count > 0) { + struct destination *dest=g_new(struct destination, 1); + dest->town=&town->town; + dest->street_name=NULL; + dest->c=town->town.c; + destination_town_set(town, rows, 0); + row=gtk_clist_append(GTK_CLIST(search->clist), rows); + printf("town row %d %p dest:0x%lx,0x%lx\n", row, dest, dest->c->x, dest->c->y); + gtk_clist_set_row_data(GTK_CLIST(search->clist), row, dest); + search->count--; + } +} + +GHashTable * +destination_country_new(void) +{ + return g_hash_table_new_full(NULL, NULL, NULL, g_free); +} + +int +destination_country_add(struct country *cou, void *data) +{ + struct search_param *search=data; + struct country *cou2; + + void *first; + first=g_hash_table_lookup(search->country_hash, (void *)(cou->id)); + if (! first) { + cou2=g_new(struct country, 1); + *cou2=*cou; + g_hash_table_insert(search->country_hash, (void *)(cou->id), cou2); + } + return 0; +} + +void +destination_country_show(gpointer key, gpointer value, gpointer user_data) +{ + struct country *cou=value; + struct search_param *search=(struct search_param *)user_data; + char *rows[9]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; + if (search->count > 0) { + rows[0]=cou->name; + rows[1]=cou->car; + rows[2]=cou->iso2; + rows[3]=cou->iso3; + gtk_clist_append(GTK_CLIST(search->clist), rows); + search->count--; + } +} + +int +destination_town_add(struct town *town, void *data) +{ + struct search_param *search=data; + struct dest_town *first; + + struct dest_town cmp; + char *zip1, *zip2; + + if (town->id == 0x1d546b7e) { + printf("found\n"); + } + cmp.country=town->country; + cmp.assoc=town->street_assoc; + cmp.name=town->name; + first=g_hash_table_lookup(search->town_hash, &cmp); + if (! first) { + first=g_new(struct dest_town, 1); + first->country=cmp.country; + first->assoc=cmp.assoc; + strcpy(first->postal_code, town->postal_code2); + first->name=town->name; + first->town=*town; + g_hash_table_insert(search->town_hash, first, first); + } else { + zip1=town->postal_code2; + zip2=first->postal_code; + while (*zip1 && *zip2) { + if (*zip1 != *zip2) { + while (*zip2) { + *zip2++='.'; + } + break; + } + zip1++; + zip2++; + } + } + cmp.name=NULL; + cmp.assoc=town->id; + first=g_hash_table_lookup(search->district_hash, &cmp); + if (! first) { + first=g_new(struct dest_town, 1); + first->country=cmp.country; + first->assoc=cmp.assoc; + first->name=NULL; + first->town=*town; + g_hash_table_insert(search->district_hash, first, first); + } + return 0; +} + +void +destination_town_search(gpointer key, gpointer value, gpointer user_data) +{ + struct country *cou=value; + struct search_param *search=(struct search_param *)user_data; + town_search_by_name(search->map_data, cou->id, search->town, 1, destination_town_add, search); + +} + +GHashTable * +destination_street_new(void) +{ + return g_hash_table_new_full(NULL, NULL, NULL, g_free); +} + + +int +destination_street_add(struct street_name *name, void *data) +{ + struct search_param *search=data; + struct street_name *name2; + + name2=g_new(struct street_name, 1); + *name2=*name; + g_hash_table_insert(search->street_hash, name2, name2); + return 0; +} + +static int +number_partial(int search, int ref, int ext) +{ + int max=1; + + printf("number_partial(%d,%d,%d)", search, ref, ext); + if (ref >= 10) + max=10; + if (ref >= 100) + max=100; + if (ref >= 1000) + max=1000; + while (search < max) { + search*=10; + search+=ext; + } + printf("max=%d result=%d\n", max, search); + return search; +} + +static int +check_number(int low, int high, int s_low, int s_high) +{ + printf("check_number(%d,%d,%d,%d)\n", low, high, s_low, s_high); + if (low <= s_high && high >= s_low) + return 1; + if (s_low == s_high) { + if (low <= number_partial(s_high, high, 9) && high >= number_partial(s_low, low, 0)) + return 1; + } + printf("return 0\n"); + return 0; +} + +void +destination_street_show_common(gpointer key, gpointer value, gpointer user_data, int number) +{ + struct street_name *name=value; + struct search_param *search=(struct search_param *)user_data; + char *utf8; + struct dest_town cmp; + struct dest_town *town; + int row; + char buffer[32]; + char *rows[9]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; + struct street_name_info info; + struct street_name_number_info num_info; + + name->tmp_len=name->aux_len; + name->tmp_data=name->aux_data; + while (street_name_get_info(&info, name) && search->count > 0) { + struct destination *dest; + cmp.country=info.country; + cmp.assoc=info.dist; + cmp.name=NULL; + town=g_hash_table_lookup(search->district_hash, &cmp); + printf("town=%p\n", town); + if (town) { + destination_town_set(town, rows, 1); + utf8=g_convert(name->name2,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + rows[4]=utf8; + if (number) { + info.tmp_len=info.aux_len; + info.tmp_data=info.aux_data; + while (street_name_get_number_info(&num_info, &info) && search->count > 0) { + dest=g_new(struct destination, 1); + dest->town=&town->town; + dest->street_name=name; + dest->c=num_info.c; + if (check_number(num_info.first, num_info.last, search->number_low, search->number_high)) { + if (num_info.first == num_info.last) + sprintf(buffer,"%d",num_info.first); + else + sprintf(buffer,"%d-%d",num_info.first,num_info.last); + rows[8]=buffer; + printf("'%s','%s','%s','%s','%s','%s'\n", rows[0],rows[1],rows[2],rows[3],rows[4],rows[5]); + row=gtk_clist_append(GTK_CLIST(listbox), rows); + gtk_clist_set_row_data(GTK_CLIST(listbox), row, dest); + search->count--; + } + } + } else { + row=gtk_clist_append(GTK_CLIST(listbox), rows); + dest=g_new(struct destination, 1); + dest->town=&town->town; + dest->street_name=name; + dest->c=info.c; + gtk_clist_set_row_data(GTK_CLIST(listbox), row, dest); + search->count--; + } + g_free(utf8); + } else { + printf("Town for '%s' not found\n", name->name2); + } + } +} + +void +destination_street_show(gpointer key, gpointer value, gpointer user_data) +{ + destination_street_show_common(key, value, user_data, 0); +} + +void +destination_street_show_number(gpointer key, gpointer value, gpointer user_data) +{ + destination_street_show_common(key, value, user_data, 1); +} + +void +destination_street_search(gpointer key, gpointer value, gpointer user_data) +{ + const struct dest_town *town=value; + struct search_param *search=(struct search_param *)user_data; + street_name_search(search->map_data, town->country, town->assoc, search->street, 1, destination_street_add, search); +} + + + +void changed(GtkWidget *widget, struct search_param *search) +{ + const char *str; + char *empty[9]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; + char *dash; + + gtk_clist_freeze(GTK_CLIST(listbox)); + gtk_clist_clear(GTK_CLIST(listbox)); + + selected=-1; + + search->count=row_count; + + str=gtk_entry_get_text(GTK_ENTRY(widget)); + + if (widget == entry_country) { + if (search->country_hash) g_hash_table_destroy(search->country_hash); + search->country_hash=NULL; + } + if (widget == entry_country || widget == entry_city) { + if (search->town_hash) g_hash_table_destroy(search->town_hash); + if (search->district_hash) g_hash_table_destroy(search->district_hash); + search->town_hash=NULL; + search->district_hash=NULL; + } + + if (widget == entry_country || widget == entry_city || widget == entry_street) { + if (search->street_hash) g_hash_table_destroy(search->street_hash); + search->street_hash=NULL; + } + + if (widget == entry_country) { + search->country_hash=destination_country_new(); + search->country=str; + country_search_by_name(str, 1, destination_country_add, search); + country_search_by_car(str, 1, destination_country_add, search); + country_search_by_iso2(str, 1, destination_country_add, search); + country_search_by_iso3(str, 1, destination_country_add, search); + g_hash_table_foreach(search->country_hash, destination_country_show, search); + } + if (widget == entry_city) { + printf("Ort: '%s'\n", str); + if (strlen(str) > 1) { + search->town=str; + search->town_hash=destination_town_new(); + search->district_hash=destination_town_new(); + g_hash_table_foreach(search->country_hash, destination_town_search, search); + g_hash_table_foreach(search->town_hash, destination_town_show, search); + } + } + if (widget == entry_street) { + printf("Street: '%s'\n", str); + search->street=str; + search->street_hash=destination_street_new(); + g_hash_table_foreach(search->town_hash, destination_street_search, search); + g_hash_table_foreach(search->street_hash, destination_street_show, search); + } + if (widget == entry_number) { + char buffer[strlen(str)+1]; + strcpy(buffer, str); + search->number=str; + dash=index(buffer,'-'); + if (dash) { + *dash++=0; + search->number_low=atoi(buffer); + if (strlen(str)) + search->number_high=atoi(dash); + else + search->number_high=10000; + } else { + if (!strlen(str)) { + search->number_low=0; + search->number_high=10000; + } else { + search->number_low=atoi(str); + search->number_high=atoi(str); + } + } + g_hash_table_foreach(search->street_hash, destination_street_show_number, search); + } + while (search->count-- > 0) { + gtk_clist_append(GTK_CLIST(listbox), empty); + } + gtk_clist_columns_autosize (GTK_CLIST(listbox)); + gtk_clist_thaw(GTK_CLIST(listbox)); +} + +int destination_address(struct container *co) +{ + GtkWidget *window2, *keyboard, *vbox, *table; + GtkWidget *label_country; + GtkWidget *label_postal, *label_city, *label_district; + GtkWidget *label_street, *label_number; + GtkWidget *hseparator1,*hseparator2; + GtkWidget *button1,*button2; + init_keyboard_stuff((char *) NULL); + int handlerid; + int i; + gchar *text[9]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; + struct search_param *search=&search_param2; + +#if 0 + if (co->cursor) { + struct coord *c; + struct route_info *rt; + struct street_str *st; + struct block_info *blk; + struct street_name name; + struct town town; + + c=cursor_pos_get(co->cursor); + rt=route_find_nearest_street(co->map_data, c); + st=route_info_get_street(rt); + blk=route_info_get_block(rt); + printf("segid 0x%lx nameid 0x%lx\n", st->segid, st->nameid); + street_name_get_by_id(&name, blk->mdata, st->nameid); + printf("'%s' '%s' %d\n", name.name1, name.name2, name.segment_count); + for (i = 0 ; i < name.segment_count ; i++) { + if (name.segments[i].segid == st->segid) { + printf("found: 0x%x, 0x%x\n", name.segments[i].country, name.segments[i].segid); + town_get_by_id(&town, co->map_data, name.segments[i].country, name.townassoc); + printf("%s/%s\n", town.name, town.district); + } + } + } +#endif + + window2 = gtk_window_new(GTK_WINDOW_TOPLEVEL); + keyboard = build_keyboard(NULL, "/usr/local/share/gtkeyboard/DE.key"); + vbox = gtk_vbox_new(FALSE, 0); + table = gtk_table_new(3, 8, FALSE); + + entry_country = gtk_entry_new(); + label_country = gtk_label_new("Land"); + entry_postal = gtk_entry_new(); + label_postal = gtk_label_new("PLZ"); + entry_city = gtk_entry_new(); + label_city = gtk_label_new("Ort"); + entry_district = gtk_entry_new(); + label_district = gtk_label_new("Ortsteil/Gemeinde"); + hseparator1 = gtk_vseparator_new(); + entry_street = gtk_entry_new(); + label_street = gtk_label_new("Strasse"); + entry_number = gtk_entry_new(); + label_number = gtk_label_new("Nummer"); + listbox = gtk_clist_new(9); + for (i=0 ; i < row_count ; i++) { + gtk_clist_append(GTK_CLIST(listbox), text); + } + gtk_clist_thaw(GTK_CLIST(listbox)); + gtk_clist_columns_autosize (GTK_CLIST(listbox)); + + hseparator2 = gtk_vseparator_new(); + button1 = gtk_button_new_with_label("Karte"); + button2 = gtk_button_new_with_label("Ziel"); + + gtk_table_attach(GTK_TABLE(table), label_country, 0, 1, 0, 1, 0, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), label_postal, 1, 2, 0, 1, 0, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), label_city, 2, 3, 0, 1, 0, GTK_FILL|GTK_EXPAND, 0, 0); + + gtk_table_attach(GTK_TABLE(table), entry_country, 0, 1, 1, 2, 0, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), entry_postal, 1, 2, 1, 2, 0, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), entry_city, 2, 3, 1, 2, 0, GTK_FILL|GTK_EXPAND, 0, 0); + + gtk_table_attach(GTK_TABLE(table), label_district, 0, 1, 2, 3, 0, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), label_street, 1, 2, 2, 3, 0, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), label_number, 2, 3, 2, 3, 0, GTK_FILL|GTK_EXPAND, 0, 0); + + gtk_table_attach(GTK_TABLE(table), entry_district, 0, 1, 3, 4, 0, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), entry_street, 1, 2, 3, 4, 0, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), entry_number, 2, 3, 3, 4, 0, GTK_FILL|GTK_EXPAND, 0, 0); + + gtk_table_attach(GTK_TABLE(table), listbox, 0, 3, 4, 5, GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND, 0, 0); + + gtk_table_attach(GTK_TABLE(table), button1, 0, 1, 5, 6, GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_table_attach(GTK_TABLE(table), button2, 2, 3, 5, 6, GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND, 0, 0); + + search->map_data=co->map_data; + search->clist=listbox; + gtk_signal_connect(GTK_OBJECT(entry_country), "changed", GTK_SIGNAL_FUNC(changed), search); + gtk_signal_connect(GTK_OBJECT(entry_postal), "changed", GTK_SIGNAL_FUNC(changed), search); + gtk_signal_connect(GTK_OBJECT(entry_city), "changed", GTK_SIGNAL_FUNC(changed), search); + gtk_signal_connect(GTK_OBJECT(entry_district), "changed", GTK_SIGNAL_FUNC(changed), search); + gtk_signal_connect(GTK_OBJECT(entry_street), "changed", GTK_SIGNAL_FUNC(changed), search); + gtk_signal_connect(GTK_OBJECT(entry_number), "changed", GTK_SIGNAL_FUNC(changed), search); + gtk_signal_connect(GTK_OBJECT(button1), "clicked", GTK_SIGNAL_FUNC(button_map), co); + gtk_signal_connect(GTK_OBJECT(button2), "clicked", GTK_SIGNAL_FUNC(button_destination), co); + gtk_widget_grab_focus(entry_city); + + gtk_container_add(GTK_CONTAINER(vbox), table); + gtk_container_add(GTK_CONTAINER(vbox), keyboard); + gtk_container_add(GTK_CONTAINER(window2), vbox); + handlerid = gtk_timeout_add(256, (GtkFunction) track_focus, NULL); + + gtk_signal_connect(GTK_OBJECT(listbox), "select-row", GTK_SIGNAL_FUNC(select_row), NULL); + + gtk_widget_show_all(window2); + + return 0; +} diff --git a/destination.h b/destination.h new file mode 100644 index 00000000..68530f8f --- /dev/null +++ b/destination.h @@ -0,0 +1,11 @@ +enum destination_type { + destination_type_town=4, + destination_type_poly=6, + destination_type_street=8, + destination_type_house=12, + destination_type_map_point=16, + destination_type_bookmark=128, +}; + +int destination_address(struct container *co); +int destination_set(struct container *co, enum destination_type type, char *text, struct coord *c); diff --git a/display.c b/display.c new file mode 100644 index 00000000..ca1874ae --- /dev/null +++ b/display.c @@ -0,0 +1,266 @@ +#include <malloc.h> +#include <math.h> +#include "display.h" +#include "graphics.h" + +struct graphics_image *icons; + +struct graphics_image * +get_icon(struct graphics *gr, char *name) +{ + struct graphics_image *curr=icons; + while (curr) { + if (! strcmp(curr->name, name) && curr->gr == gr) + return curr; + curr=curr->next; + } + curr=gr->image_new(gr, name); + curr->next=icons; + icons=curr; + return curr; +} + +static int +within_dist_point(struct point *p0, struct point *p1, int dist) +{ + if ((p0->x-p1->x)*(p0->x-p1->x) + (p0->y-p1->y)*(p0->y-p1->y) <= dist*dist) { + return 1; + } + return 0; +} + +static int +within_dist_line(struct point *p, struct point *line_p0, struct point *line_p1, int dist) +{ + int vx,vy,wx,wy; + int c1,c2; + struct point line_p; + + vx=line_p1->x-line_p0->x; + vy=line_p1->y-line_p0->y; + wx=p->x-line_p0->x; + wy=p->y-line_p0->y; + + c1=vx*wx+vy*wy; + if ( c1 <= 0 ) + return within_dist_point(p, line_p0, dist); + c2=vx*vx+vy*vy; + if ( c2 <= c1 ) + return within_dist_point(p, line_p1, dist); + + line_p.x=line_p0->x+vx*c1/c2; + line_p.y=line_p0->y+vy*c1/c2; + return within_dist_point(p, &line_p, dist); +} + +static int +within_polygon(struct point *p, struct point *poly_pnt, int count) +{ + int i, j, c = 0; + for (i = 0, j = count-1; i < count; j = i++) { + if ((((poly_pnt[i].y <= p->y) && ( p->y < poly_pnt[j].y )) || + ((poly_pnt[j].y <= p->y) && ( p->y < poly_pnt[i].y))) && + (poly_pnt->x < (poly_pnt[j].x - poly_pnt[i].x) * (p->y - poly_pnt[i].y) / (poly_pnt[j].y - poly_pnt[i].y) + poly_pnt[i].x)) { + c = !c; + } + } + return c; +} + +static int +within_dist_lines(struct point *p, struct point *line_pnt, int count, int dist) +{ + int i; + for (i = 0 ; i < count-1 ; i++) { + if (within_dist_line(p,line_pnt+i,line_pnt+i+1,dist)) { + return 1; + } + } + return 0; +} + +void +display_free(struct display_list **list, int count) +{ + struct display_list *curr,*next; + while (count--) { + curr=*list; + while (curr) { + next=curr->next; + g_free(curr); + curr=next; + } + *list++=NULL; + } +} + +void * +display_add(struct display_list **head, int type, int attr, char *label, int count, struct point *p, void (*info)(struct display_list *list, struct popup_item **item),void *data, int data_size) +{ + struct display_list *new; + int label_len=0; + + if (! data) + data_size=0; + + if (label) + label_len=strlen(label)+1; + new=g_malloc(sizeof(*new)+count*sizeof(*p)+label_len+data_size); + new->type=type; + new->attr=attr; + new->info=info; + if (label) { + new->label=(char *)new+sizeof(*new)+count*sizeof(*p); + strcpy(new->label, label); + } else + new->label=NULL; + new->count=count; + memcpy(new->p, p, count*sizeof(*p)); + if (data_size) { + new->data=(char *)new+sizeof(*new)+count*sizeof(*p)+label_len; + memcpy(new->data, data, data_size); + } else + new->data=NULL; + new->next=*head; + *head=new; + return new->data; +} + +void +display_draw(struct display_list *list, struct graphics *gr, struct graphics_gc *gc_fill, struct graphics_gc *gc_line) +{ + struct graphics_image *icon; + int r=3; + struct point p; + while (list) { + switch (list->type) { + case 0: + gr->draw_polygon(gr, gc_fill, list->p, list->count); + if (gc_line) + gr->draw_lines(gr, gc_line, list->p, list->count); + break; + case 1: + case 2: + gr->draw_lines(gr, gc_fill, list->p, list->count); + break; + case 3: + case 4: + gr->draw_circle(gr, gc_fill, list->p, r); + break; + case 5: + icon=get_icon(gr, list->label); + if (icon) { + p.x=list->p[0].x - icon->width/2; + p.y=list->p[0].y - icon->height/2; + gr->draw_image(gr, gc_fill, &p, icon); + } + else + printf("invalid icon '%s'\n", list->label); + break; + } + list=list->next; + } +} + +void +display_find(struct point *p, struct display_list **in, int in_count, int maxdist, struct display_list **out, int out_count) +{ + int i=0; + struct display_list *curr; + + while (in_count--) { + curr=*in++; + while (curr) { + switch (curr->type) { + case 0: + if (within_polygon(p, curr->p, curr->count) || + within_dist_lines(p, curr->p, curr->count, maxdist)) + { + if (i < out_count) + out[i++]=curr; + } + break; + case 1: + case 2: + if (within_dist_lines(p, curr->p, curr->count, maxdist)) + { + if (i < out_count) + out[i++]=curr; + } + break; + case 3: + case 4: + case 5: + if (within_dist_point(p, curr->p, 8)) + { + if (i < out_count) + out[i++]=curr; + } + break; + } + curr=curr->next; + } + } + if (i < out_count) + out[i]=NULL; +} + + +static void +label_line(struct graphics *gr, struct graphics_gc *fg, struct graphics_gc *bg, struct graphics_font *font, struct point *p, int count, char *label) +{ + int i,x,y,tl; + double dx,dy,l; + struct point p_t; + + tl=strlen(label)*400; + for (i = 0 ; i < count-1 ; i++) { + dx=p[i+1].x-p[i].x; + dx*=100; + dy=p[i+1].y-p[i].y; + dy*=100; + l=(int)sqrt((float)(dx*dx+dy*dy)); + if (l > tl) { + x=p[i].x; + y=p[i].y; + if (dx < 0) { + dx=-dx; + dy=-dy; + x=p[i+1].x; + y=p[i+1].y; + } + x+=(l-tl)*dx/l/200; + y+=(l-tl)*dy/l/200; + x-=dy*45/l/10; + y+=dx*45/l/10; + p_t.x=x; + p_t.y=y; +#if 0 + printf("display_text: '%s', %d, %d, %d, %d %d\n", label, x, y, dx*0x10000/l, dy*0x10000/l, l); +#endif + gr->draw_text(gr, fg, bg, font, label, &p_t, dx*0x10000/l, dy*0x10000/l); + } + } +} + +void +display_labels(struct display_list *list, struct graphics *gr, struct graphics_gc *fg, struct graphics_gc *bg, struct graphics_font *font) +{ + struct point p; + while (list) { + if (list->label) { + switch (list->type) { + case 1: + case 2: + label_line(gr, fg, bg, font, list->p, list->count, list->label); + break; + case 3: + p.x=list->p[0].x+3; + p.y=list->p[0].y+10; + gr->draw_text(gr, fg, bg, font, list->label, &p, 0x10000, 0); + break; + } + } + list=list->next; + } +} diff --git a/display.h b/display.h new file mode 100644 index 00000000..952381f2 --- /dev/null +++ b/display.h @@ -0,0 +1,24 @@ +#include "point.h" + +struct popup_item; +struct graphics; +struct graphics_gc; +struct graphics_font; + +struct display_list { + struct display_list *next; + void *data; + int type; + int attr; + char *label; + int count; + void (*info)(struct display_list *list, struct popup_item **popup); + struct point p[0]; +}; +void *display_add(struct display_list **head, int type, int attr, char *label, int count, struct point *p, void (*info)(struct display_list *list, struct popup_item **popup), void *data, int data_size); + +void display_free(struct display_list **list, int count); + +void display_draw(struct display_list *list, struct graphics *gr, struct graphics_gc *gc_fill, struct graphics_gc *gc_line); +void display_find(struct point *pnt, struct display_list **in, int in_count, int maxdist, struct display_list **out, int out_count); +void display_labels(struct display_list *list, struct graphics *gr, struct graphics_gc *fg, struct graphics_gc *bg, struct graphics_font *font); diff --git a/draw_info.h b/draw_info.h new file mode 100644 index 00000000..6acee92c --- /dev/null +++ b/draw_info.h @@ -0,0 +1,5 @@ +struct draw_info { + struct container *co; + int display; + int limit; +}; @@ -0,0 +1,124 @@ +#include <unistd.h> +#include <string.h> +#include <fcntl.h> +#include <malloc.h> +#include <sys/stat.h> +#include <sys/mman.h> +#include <dirent.h> +#include <stdio.h> +#include <glib.h> +#include "file.h" + +struct file * +file_create(char *name) +{ + int fd; + struct stat stat; + struct file *file=malloc(sizeof(*file)+strlen(name)+1); + + if (! file) + return file; + fd=open(name, O_RDONLY); + if (fd < 0) { + free(file); + return NULL; + } + fstat(fd, &stat); + file->size=stat.st_size; + file->name=(char *)file+sizeof(*file); + strcpy(file->name, name); + file->begin=mmap(NULL, file->size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); + g_assert(file->begin != NULL); + if (file->begin == (void *)0xffffffff) { + perror("mmap"); + } + g_assert(file->begin != (void *)0xffffffff); + file->end=file->begin+file->size; + file->private=NULL; + close(fd); + + g_assert(file != NULL); + return file; +} + +void +file_set_readonly(struct file *file) +{ + mprotect(file->begin, file->end-file->begin, PROT_READ); +} + +void * +file_opendir(char *dir) +{ + return opendir(dir); +} + +char * +file_readdir(void *hnd) +{ + struct dirent *ent; + + ent=readdir(hnd); + if (! ent) + return NULL; + return ent->d_name; +} + +void +file_closedir(void *hnd) +{ + closedir(hnd); +} + +struct file * +file_create_caseinsensitive(char *name) +{ + char dirname[strlen(name)+1]; + char *filename; + char *p; + void *d; + struct file *ret; + + ret=file_create(name); + if (ret) + return ret; + + strcpy(dirname, name); + p=dirname+strlen(name); + while (p > dirname) { + if (*p == '/') + break; + p--; + } + *p=0; + d=file_opendir(dirname); + if (d) { + *p++='/'; + while ((filename=file_readdir(d))) { + if (!strcasecmp(filename, p)) { + strcpy(p, filename); + ret=file_create(dirname); + if (ret) + break; + } + } + file_closedir(d); + } + return ret; +} + +void +file_destroy(struct file *f) +{ + munmap(f->begin, f->size); + free(f); +} + +int +file_get_param(struct file *file, struct param_list *param, int count) +{ + int i=count; + param_add_string("Filename", file->name, ¶m, &count); + param_add_hex("Size", file->size, ¶m, &count); + return i-count; +} @@ -0,0 +1,18 @@ +#include "param.h" + +struct file { + unsigned char *begin; + unsigned char *end; + unsigned long size; + char *name; + void *private; +}; + +struct file *file_create(char *name); +void file_set_readonly(struct file *file); +struct file *file_create_caseinsensitive(char *name); +int file_get_param(struct file *file, struct param_list *param, int count); +void file_destroy(struct file *f); +void *file_opendir(char *dir); +char *file_readdir(void *hnd); +void file_closedir(void *hnd); diff --git a/get_map b/get_map new file mode 100755 index 00000000..20de37d3 --- /dev/null +++ b/get_map @@ -0,0 +1,5 @@ +#! /bin/bash +echo "/* XPM */" >map.xpm +req="<MapRequest reqVer='100' format='jpeg' visibleRoutes='111111111' colorDepth='4'><Rect l='0' t='0' r='$1' b='$2'></Rect><Rect l='$3' t='$4' r='$5' b='$6'></Rect></MapRequest>" +perl -e 'print (pack("a20",length($ARGV[0]))) ; print $ARGV[0]' "$req" | netcat localhost 10371 | dd bs=20 skip=1 2>/dev/null | tail +2 >>map.xpm + diff --git a/gps_emu b/gps_emu new file mode 100755 index 00000000..f2eef3e5 --- /dev/null +++ b/gps_emu @@ -0,0 +1,19 @@ +#! /bin/bash +function send_data +{ + trap send_data SIGPIPE + while read line + do + case $line in + \$GPVTG*) + echo "$line" + sleep 1 + ;; + *) + echo "$line" + ;; + esac + done <track/all.txt >/tmp/gpsdata +} + +send_data diff --git a/gps_emu2 b/gps_emu2 new file mode 100755 index 00000000..8f5d9a61 --- /dev/null +++ b/gps_emu2 @@ -0,0 +1,40 @@ +#! /usr/bin/perl + +open(FILE,"<$ARGV[0]"); +read(FILE,$header,64); + +($magic,$version)=unpack("a8l",$header); + +#print "magic=$magic version=$version\n"; + +select STDOUT; $| = 1; + +while (read(FILE,$record,64)) +{ + ($flags,$status,$mode,$hdop,$vdop,$pdop,$sats,$timestampl,$timestamph,$latitude,$longitude,$altitude,$speed,$direction)=unpack("SCCCCCCLLddddd",$record); + + + if ($mode == 3) { + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($timestampl); + $datestring=sprintf("%02d.%02d.%d %02d:%02d:%02d",$mday,$mon+1,$year+1900,$hour,$min,$sec); + $long_dir="E"; + $lat_dir="N"; + if ($longitude < 0) { + $long_dir="W"; + $logitude=-$longitude; + } + if ($latitude < 0) { + $lat_dir="S"; + $latitude=-$latitude; + } + $long_deg=int($longitude); + $lat_deg=int($latitude); + $long_gps=$long_deg*100+($longitude-$long_deg)*60; + $lat_gps=$lat_deg*100+($latitude-$lat_deg)*60; + $lastpos="$lat_gps $lat_dir $long_gps $long_dir"; + printf("\$GPGGA,%02d%02d%02d,%s,%s,%s,%s,1,%d,%s,%s,M,,,,0000*0C\n",$hour,$min,$sec,$lat_gps,$lat_dir,$long_gps,$long_dir,$sats,$hdop,$altitude); + printf("\$GPVTG,%s,T,,M,,N,%s,K,*6A\n",$direction,$speed*1.852); + printf(STDERR "\$GPGGA,%02d%02d%02d,%s,%s,%s,%s,1,%d,%s,%s,M,,,,0000*0C\n",$hour,$min,$sec,$lat_gps,$lat_dir,$long_gps,$long_dir,$sats,$hdop,$altitude); + sleep(1); + } +} diff --git a/gps_emu3 b/gps_emu3 new file mode 100755 index 00000000..5c0ecf25 --- /dev/null +++ b/gps_emu3 @@ -0,0 +1,12 @@ +#! /bin/bash +while read line +do + if [ -n "$line" ] + then + echo $line + fi + if [ "${line#\$GPVTG}" != "$line" ] + then + sleep 1 + fi +done <$1 diff --git a/graphics.c b/graphics.c new file mode 100644 index 00000000..8787e05e --- /dev/null +++ b/graphics.c @@ -0,0 +1,401 @@ +#include <glib.h> +#include "string.h" +#include "draw_info.h" +#include "graphics.h" +#include "map_data.h" +#include "coord.h" +#include "param.h" /* FIXME */ +#include "block.h" /* FIXME */ +#include "poly.h" +#include "town.h" +#include "street.h" +#include "transform.h" +#include "container.h" + + +#define GC_BACKGROUND 0 +#define GC_WOOD 1 +#define GC_TOWN_FILL 2 +#define GC_TOWN_LINE 3 +#define GC_WATER_FILL 4 +#define GC_WATER_LINE 5 +#define GC_RAIL 6 +#define GC_TEXT_FG 7 +#define GC_TEXT_BG 8 +#define GC_BLACK 9 +#define GC_STREET_SMALL 10 +#define GC_STREET_SMALL_B 11 +#define GC_PARK 12 +#define GC_BUILDING 13 +#define GC_BUILDING_2 14 +#define GC_STREET_MID 15 +#define GC_STREET_MID_B 16 +#define GC_STREET_BIG 17 +#define GC_STREET_BIG_B 18 +#define GC_STREET_BIG2 19 +#define GC_STREET_BIG2_B 20 +#define GC_STREET_BIG2_L 21 +#define GC_STREET_NO_PASS 22 +#define GC_STREET_ROUTE 23 +#define GC_LAST 24 + + +int color[][3]={ + {0xffff, 0xefef, 0xb7b7}, + {0x8e8e, 0xc7c7, 0x8d8d}, + {0xffff, 0xc8c8, 0x9595}, + {0xebeb, 0xb4b4, 0x8181}, + {0x8282, 0xc8c8, 0xeaea}, + {0x5050, 0x9696, 0xb8b8}, + {0x8080, 0x8080, 0x8080}, + {0x0, 0x0, 0x0}, + {0xffff, 0xffff, 0xffff}, + {0x0, 0x0, 0x0}, + {0xffff, 0xffff, 0xffff}, + {0xe0e0, 0xe0e0, 0xe0e0}, + {0x7c7c, 0xc3c3, 0x3434}, + {0xe6e6, 0xe6e6, 0xe6e6}, + {0xffff, 0x6666, 0x6666}, + {0xffff, 0xffff, 0x0a0a}, + {0xe0e0, 0xe0e0, 0xe0e0}, + {0xffff, 0x0000, 0x0000}, + {0x0000, 0x0000, 0x0000}, + {0xffff, 0xffff, 0x0a0a}, + {0xffff, 0x0000, 0x0000}, + {0xffff, 0x0000, 0x0000}, + {0xe0e0, 0xe0e0, 0xffff}, + {0x0000, 0x0000, 0xa0a0}, +}; + +void +container_init_gra(struct container *co) +{ + struct graphics *gra=co->gra; + int i; + + gra->font=g_new0(struct graphics_font *,3); + gra->font[0]=gra->font_new(gra,140); + gra->font[1]=gra->font_new(gra,200); + gra->font[2]=gra->font_new(gra,300); + gra->gc=g_new0(struct graphics_gc *, GC_LAST); + for (i = 0 ; i < GC_LAST ; i++) { + gra->gc[i]=gra->gc_new(gra); + gra->gc_set_background(gra->gc[i], color[0][0], color[0][1], color[0][2]); + gra->gc_set_foreground(gra->gc[i], color[i][0], color[i][1], color[i][2]); + } + gra->gc_set_background(gra->gc[GC_TEXT_BG], color[7][0], color[7][1], color[7][2]); +} + +void +graphics_get_view(struct container *co, long *x, long *y, unsigned long *scale) +{ + struct transformation *t=co->trans; + if (x) *x=t->center.x; + if (y) *y=t->center.y; + if (scale) *scale=t->scale; +} + +void +graphics_set_view(struct container *co, long *x, long *y, unsigned long *scale) +{ + struct transformation *t=co->trans; + if (x) t->center.x=*x; + if (y) t->center.y=*y; + if (scale) t->scale=*scale; + graphics_redraw(co); +} + +void +graphics_draw(struct map_data *mdata, int file, struct container *co, int display, int limit, int limit2, + void(*func)(struct block_info *, unsigned char *, unsigned char *, void *)) +{ + struct draw_info info; + info.co=co; + info.display=display; + info.limit=limit; + map_data_foreach(mdata, file, co->trans, limit2, func, &info); +} + +void +graphics_redraw(struct container *co) +{ + int scale=transform_get_scale(co->trans); + int i,slimit=255,tlimit=255,plimit=255; + int bw[4],w[4],t[4]; + struct display_list **disp=co->disp; + struct graphics *gra=co->gra; + +#if 0 + printf("scale=%d center=0x%lx,0x%lx mercator scale=%f\n", scale, co->trans->center.x, co->trans->center.y, transform_scale(co->trans->center.y)); +#endif + + display_free(co->disp, display_end); + + transform_setup_source_rect(co->trans); + + gra->draw_mode(gra, draw_mode_begin); + for (i = 0 ; i < data_window_type_end; i++) { + data_window_begin(co->data_window[i]); + } + gra->gc_set_linewidth(gra->gc[GC_RAIL], 3); + + bw[0]=0; + bw[1]=0; + bw[2]=0; + bw[3]=0; + w[0]=1; + w[1]=1; + w[2]=1; + w[3]=1; + t[0]=0xf; + t[1]=0xf; + t[2]=0xf; + t[3]=0xf; + if (scale < 2) { + tlimit=0xff; + slimit=0xff; + bw[0]=17; + w[0]=15; + bw[1]=19; + w[1]=17; + bw[2]=19; + w[2]=17; + bw[3]=21; + w[3]=17; + } else if (scale < 4) { + tlimit=0xff; + slimit=0xff; + bw[0]=11; + w[0]=9; + bw[1]=13; + w[1]=11; + bw[2]=13; + w[2]=11; + bw[3]=15; + w[3]=11; + } else if (scale < 8) { + tlimit=0xff; + slimit=0xff; + bw[0]=5; + w[0]=3; + bw[1]=11; + w[1]=9; + bw[2]=11; + w[2]=9; + bw[3]=13; + w[3]=9; + t[0]=0xa; + t[1]=0xf; + } else if (scale < 16) { + tlimit=0xff; + slimit=0xff; + bw[1]=9; + w[1]=7; + bw[2]=9; + w[2]=7; + bw[3]=11; + w[3]=7; + t[0]=0x9; + t[1]=0xe; + } else if (scale < 32) { + tlimit=0xff; + slimit=0xff; + bw[1]=5; + w[1]=3; + bw[2]=5; + w[2]=3; + bw[3]=5; + w[3]=3; + t[0]=0x8; + t[1]=0xb; + } else if (scale < 64) { + tlimit=0xf; + slimit=0x6; + bw[1]=5; + w[1]=3; + bw[2]=5; + w[2]=3; + bw[3]=5; + w[3]=3; + t[0]=0x8; + t[1]=0xa; + } else if (scale < 128) { + tlimit=0xc; + slimit=0x6; + plimit=0x1e; + w[1]=3; + w[2]=3; + bw[3]=5; + w[3]=3; + t[0]=0x7; + t[1]=0xa; + } else if (scale < 256) { + tlimit=0xb; + slimit=0x5; + plimit=0x1a; + w[2]=3; + bw[3]=5; + w[3]=3; + t[0]=0x7; + t[1]=0x8; + } else if (scale < 512) { + tlimit=0x9; + slimit=0x5; + plimit=0x14; + w[1]=0; + w[2]=1; + bw[3]=3; + w[3]=1; + t[0]=0x4; + t[1]=0x7; + } else if (scale < 1024) { + tlimit=0x8; + slimit=0x4; + slimit=0x4; + plimit=0x11; + w[1]=0; + w[2]=1; + bw[3]=3; + w[3]=1; + t[0]=0x3; + t[1]=0x5; + } else if (scale < 2048) { + tlimit=0x5; + slimit=0x3; + plimit=0x10; + bw[3]=3; + w[3]=1; + t[0]=0x2; + t[1]=0x4; + } else if (scale < 4096) { + bw[3]=3; + w[3]=1; + tlimit=0x4; + slimit=0x2; + plimit=0xf; + t[0]=0x2; + t[1]=0x3; + } else if (scale < 8192) { + bw[3]=3; + w[3]=1; + tlimit=0x3; + slimit=0x2; + plimit=0xf; + t[0]=0x1; + t[1]=0x2; + } else { + bw[3]=3; + w[3]=1; + tlimit=0x2; + slimit=0x2; + plimit=0xf; + t[0]=0x1; + t[1]=0x4; + } + gra->gc_set_linewidth(gra->gc[GC_STREET_SMALL], w[0]); + gra->gc_set_linewidth(gra->gc[GC_STREET_NO_PASS], w[0]); + gra->gc_set_linewidth(gra->gc[GC_STREET_SMALL_B], bw[0]); + gra->gc_set_linewidth(gra->gc[GC_STREET_MID], w[1]); + gra->gc_set_linewidth(gra->gc[GC_STREET_MID_B], bw[1]); + gra->gc_set_linewidth(gra->gc[GC_STREET_BIG], w[2]); + gra->gc_set_linewidth(gra->gc[GC_STREET_BIG_B], bw[2]); + gra->gc_set_linewidth(gra->gc[GC_STREET_BIG2], w[3]); + gra->gc_set_linewidth(gra->gc[GC_STREET_BIG2_B], bw[3]); + gra->gc_set_linewidth(gra->gc[GC_STREET_ROUTE], w[3]+7+w[3]/2); + + profile_timer(NULL); + graphics_draw(co->map_data, file_border_ply, co, display_rail, plimit, 48, poly_draw_block); + graphics_draw(co->map_data, file_woodland_ply, co, display_wood, plimit, 48, poly_draw_block); + graphics_draw(co->map_data, file_other_ply, co, display_other, plimit, 48, poly_draw_block); + graphics_draw(co->map_data, file_town_twn, co, display_town, tlimit, 48, town_draw_block); + graphics_draw(co->map_data, file_water_ply, co, display_water, plimit, 48, poly_draw_block); + graphics_draw(co->map_data, file_sea_ply, co, display_sea, plimit, 48, poly_draw_block); + /* todo height, tunnel, bridge, street_bti ??? */ +#if 0 + graphics_draw(co->map_data, file_height_ply, co, display_other1, plimit, 48, poly_draw_block); +#endif + if (scale < 256) { + graphics_draw(co->map_data, file_rail_ply, co, display_rail, plimit, 48, poly_draw_block); + } + profile_timer("map_draw"); + plugin_call_draw(co); + profile_timer("plugin"); +#if 0 + draw_poly(map, &co->d_tunnel_ply, "Tunnel", 0, 11, plimit); +#endif + graphics_draw(co->map_data, file_street_str, co, display_street, slimit, 7, street_draw_block); + + display_draw(disp[display_sea], gra, gra->gc[GC_WATER_FILL], NULL); + display_draw(disp[display_wood], gra, gra->gc[GC_WOOD], NULL); + display_draw(disp[display_other], gra, gra->gc[GC_TOWN_FILL], gra->gc[GC_TOWN_LINE]); + display_draw(disp[display_other1], gra, gra->gc[GC_BUILDING], NULL); + display_draw(disp[display_other2], gra, gra->gc[GC_BUILDING_2], NULL); + display_draw(disp[display_other3], gra, gra->gc[GC_PARK], NULL); + display_draw(disp[display_water], gra, gra->gc[GC_WATER_FILL], gra->gc[GC_WATER_LINE]); + display_draw(disp[display_rail], gra, gra->gc[GC_RAIL], NULL); + street_route_draw(co); + display_draw(disp[display_street_route], gra, gra->gc[GC_STREET_ROUTE], NULL); + if (bw[0]) { + display_draw(disp[display_street_no_pass], gra, gra->gc[GC_STREET_SMALL_B], NULL); + display_draw(disp[display_street], gra, gra->gc[GC_STREET_SMALL_B], NULL); + } + if (bw[1]) + display_draw(disp[display_street1], gra, gra->gc[GC_STREET_MID_B], NULL); + if (bw[2]) + display_draw(disp[display_street2], gra, gra->gc[GC_STREET_BIG_B], NULL); + if (bw[3]) + display_draw(disp[display_street3], gra, gra->gc[GC_STREET_BIG2_B], NULL); + if (w[0]) { + display_draw(disp[display_street_no_pass], gra, gra->gc[GC_STREET_NO_PASS], NULL); + display_draw(disp[display_street], gra, gra->gc[GC_STREET_SMALL], NULL); + } + if (w[1]) + display_draw(disp[display_street1], gra, gra->gc[GC_STREET_MID], gra->gc[GC_BLACK]); + display_draw(disp[display_street2], gra, gra->gc[GC_STREET_BIG], gra->gc[GC_BLACK]); + display_draw(disp[display_street3], gra, gra->gc[GC_STREET_BIG2], gra->gc[GC_BLACK]); + if (w[3] > 1) + display_draw(disp[display_street3], gra, gra->gc[GC_STREET_BIG2_L], NULL); + + display_draw(disp[display_poi], gra, gra->gc[GC_BLACK], NULL); + + + profile_timer("display_draw"); + + if (scale < 2) { + display_labels(disp[display_street], gra, gra->gc[GC_TEXT_FG], gra->gc[GC_TEXT_BG], gra->font[1]); + display_labels(disp[display_street1], gra, gra->gc[GC_TEXT_FG], gra->gc[GC_TEXT_BG], gra->font[1]); + } + else { + display_labels(disp[display_street], gra, gra->gc[GC_TEXT_FG], gra->gc[GC_TEXT_BG], gra->font[0]); + display_labels(disp[display_street1], gra, gra->gc[GC_TEXT_FG], gra->gc[GC_TEXT_BG], gra->font[0]); + } + display_labels(disp[display_street2], gra, gra->gc[GC_TEXT_FG], gra->gc[GC_TEXT_BG], gra->font[0]); + display_labels(disp[display_street3], gra, gra->gc[GC_TEXT_FG], gra->gc[GC_TEXT_BG], gra->font[0]); + + for (i = display_town+t[1] ; i < display_town+0x10 ; i++) + display_labels(disp[i], gra, gra->gc[GC_TEXT_FG], gra->gc[GC_TEXT_BG], gra->font[0]); + for (i = display_town+t[0] ; i < display_town+t[1] ; i++) + display_labels(disp[i], gra, gra->gc[GC_TEXT_FG], gra->gc[GC_TEXT_BG], gra->font[1]); + for (i = display_town ; i < display_town+t[0] ; i++) + display_labels(disp[i], gra, gra->gc[GC_TEXT_FG], gra->gc[GC_TEXT_BG], gra->font[2]); + + for (i = display_town ; i < display_town+0x10 ; i++) + display_draw(disp[i], gra, gra->gc[GC_BLACK], NULL); + display_draw(disp[display_bti], gra, gra->gc[GC_BLACK], NULL); + profile_timer("labels"); + gra->draw_mode(gra, draw_mode_end); + for (i = 0 ; i < data_window_type_end; i++) { + data_window_end(co->data_window[i]); + } +#if 0 + map_scrollbars_update(map); +#endif +} + +void +graphics_resize(struct container *co, int w, int h) +{ + co->trans->width=w; + co->trans->height=h; + graphics_redraw(co); +} diff --git a/graphics.h b/graphics.h new file mode 100644 index 00000000..43d583dd --- /dev/null +++ b/graphics.h @@ -0,0 +1,48 @@ + +struct point; +struct container; +struct graphics_gc; +struct graphics_font; +struct graphics_image_gra; + +struct graphics_image { + struct graphics_image *next; + struct graphics *gr; + char *name; + int height; + int width; + struct graphics_image_gra *gra; +}; + +void graphics_get_view(struct container *co, long *x, long *y, unsigned long *scale); +void graphics_set_view(struct container *co, long *x, long *y, unsigned long *scale); +void graphics_resize(struct container *co, int w, int h); +void graphics_redraw(struct container *co); + +enum draw_mode_num { + draw_mode_begin, draw_mode_end, draw_mode_cursor +}; + +struct graphics +{ + struct graphics_gra *gra; + struct graphics_font **font; + struct graphics_gc **gc; + + void (*draw_mode)(struct graphics *gr, enum draw_mode_num mode); + void (*draw_lines)(struct graphics *gr, struct graphics_gc *gc, struct point *p, int count); + void (*draw_polygon)(struct graphics *gr, struct graphics_gc *gc, struct point *p, int count); + void (*draw_rectangle)(struct graphics *gr, struct graphics_gc *gc, struct point *p, int w, int h); + void (*draw_circle)(struct graphics *gr, struct graphics_gc *gc, struct point *p, int r); + void (*draw_text)(struct graphics *gr, struct graphics_gc *fg, struct graphics_gc *bg, struct graphics_font *font, unsigned char *text, struct point *p, int dx, int dy); + void (*draw_image)(struct graphics *gr, struct graphics_gc *fg, struct point *p, struct graphics_image *img); + void (*draw_restore)(struct graphics *gr, struct point *p, int w, int h); + + struct graphics_font *(*font_new)(struct graphics *gr, int size); + struct graphics_gc *(*gc_new)(struct graphics *gr); + void (*gc_set_linewidth)(struct graphics_gc *gc, int width); + void (*gc_set_foreground)(struct graphics_gc *gc, int r, int g, int b); + void (*gc_set_background)(struct graphics_gc *gc, int r, int g, int b); + struct graphics_image *(*image_new)(struct graphics *gr, char *path); + struct graphics *(*overlay_new)(struct graphics *gr, struct point *p, int w, int h); +}; diff --git a/gtkext.h b/gtkext.h new file mode 100644 index 00000000..34059d9b --- /dev/null +++ b/gtkext.h @@ -0,0 +1 @@ +void gdk_gc_set_fill_rule(GdkGC *gc, GdkFillRule fill_rule); diff --git a/locations.txt b/locations.txt new file mode 100644 index 00000000..739f93b2 --- /dev/null +++ b/locations.txt @@ -0,0 +1 @@ +5231.3734 N 01324.8633 E Berlin Alexanderplatz @@ -0,0 +1,88 @@ +#include <unistd.h> +#include <fcntl.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include "file.h" +#include "map_data.h" +#include "log.h" + +void +log_write(char *message, struct file *file, void *data, int size) +{ + char log[4096]; + unsigned char *l,*p=data; + + int fd=open("log.txt",O_RDWR|O_CREAT|O_APPEND|O_SYNC, 0644); + sprintf(log,"# %s\n",message); + l=log+strlen(log); + sprintf(l, "%s 0x%x ", file->name, p-file->begin); + l=log+strlen(log); + while (size) { + sprintf(l,"%02x ", *p++); + l+=3; + size--; + } + *l++='\n'; + *l='\0'; + write(fd, log, strlen(log)); + close(fd); +} + +void +log_apply(struct map_data *map, int files) +{ + char buffer[4096],*p; + char *filename, *addr; + struct file *file; + unsigned char *data; + unsigned long dataval; + struct map_data *curr; + int j; + + FILE *f=fopen("log.txt","r"); + if (!f) + return; + while (fgets(buffer, 4096, f)) { + if (buffer[0] != '#') { + buffer[strlen(buffer)-1]='\0'; + filename=buffer; + p=buffer; + while (*p && *p != ' ') + p++; + if (! *p) + continue; + *p++=0; + file=NULL; + curr=map; + while (curr) { + for(j = 0 ; j < files ; j++) { + if (curr->file[j] && !strcmp(curr->file[j]->name, filename)) { + file=curr->file[j]; + break; + } + } + if (file) + break; + curr=curr->next; + } + if (file) { + addr=p; + while (*p && *p != ' ') + p++; + if (! *p) + continue; + *p++=0; + data=file->begin+strtoul(addr, NULL, 16); + while (*p) { + dataval=strtoul(p, NULL, 16); + *data++=dataval; + p+=2; + while (*p == ' ') + p++; + } + } + } + } + fclose(f); +} @@ -0,0 +1,2 @@ +void log_write(char *message, struct file *file, void *data, int size); +void log_apply(struct map_data *map, int files); @@ -0,0 +1,80 @@ +#include <locale.h> +#include <stdio.h> +#include "coord.h" +#include "vehicle.h" +#include "cursor.h" +#include "speech.h" +#include "route.h" +#include "map.h" +#include "map_data.h" +#if 0 +#include "map-share.h" +#endif +#include "transform.h" +#include "popup.h" +#include "plugin.h" +#include "compass.h" +#include "container.h" + + +void *speech_handle; + +struct container *co; + +struct map_data *map_data_default; + +struct container *gui_gtk_window(int x, int y, int scale); + +extern void test(struct map_data *mdat); + +int main(int argc, char **argv) +{ + CORBA_Environment ev; + CORBA_ORB orb; + Map map_client = CORBA_OBJECT_NIL; + char *retval; + FILE *ior; + + setenv("LC_NUMERIC","C",1); + setlocale(LC_ALL,""); + setlocale(LC_NUMERIC,"C"); + gtk_set_locale(); + setlocale(LC_NUMERIC,"C"); + gtk_init(&argc, &argv); + gdk_rgb_init(); + + map_data_default=load_maps(NULL); + plugin_load(); + co=gui_gtk_window(1300000,7000000,8192); + co->vehicle=vehicle_new("/tmp/gpsdata"); + co->cursor=cursor_new(co); + co->speech=speech_new(); + speech_handle=co->speech; + co->route=route_new(); + co->compass=compass_new(co); + route_mapdata_set(co->route, co->map_data); + + +#if 0 + CORBA_exception_init(&ev); + orb = CORBA_ORB_init(&argc, argv, "orbit-local-orb", &ev); + g_assert(ev._major == CORBA_NO_EXCEPTION); + + map_srv_start_poa(orb, &ev); + g_assert(ev._major == CORBA_NO_EXCEPTION); + map_client = map_srv_start_object(&ev, map); + retval = CORBA_ORB_object_to_string(orb, map_client, &ev); + g_assert(ev._major == CORBA_NO_EXCEPTION); + ior=fopen("map.ior","w"); + if (ior) { + fprintf(ior, "%s\n", retval); + fclose(ior); + } + CORBA_free(retval); +#endif + + gtk_main(); + return 0; +} + + @@ -0,0 +1 @@ +extern void *speech_handle; diff --git a/map-common.c b/map-common.c new file mode 100644 index 00000000..91d27199 --- /dev/null +++ b/map-common.c @@ -0,0 +1,442 @@ +/* + * This file was generated by orbit-idl-2 - DO NOT EDIT! + */ + +#include <string.h> +#define ORBIT2_STUBS_API +#define ORBIT_IDL_C_COMMON +#define map_COMMON +#include "map.h" + +static const CORBA_unsigned_long ORBit_zero_int = 0; + +#ifndef ORBIT_IDL_C_IMODULE_map +void +_ORBIT_skel_small_Mappel_Test(POA_Mappel * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + void (*_impl_Test) (PortableServer_Servant + _servant, + CORBA_Environment * ev)) +{ + _impl_Test(_o_servant, _o_ev); +} + +void +_ORBIT_skel_small_Map_mapString(POA_Map * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + Map(*_impl_mapString) (PortableServer_Servant + _servant, + const CORBA_char * + astring, + CORBA_double * anum, + CORBA_Environment * + ev)) +{ + *(Map *) _o_retval = + _impl_mapString(_o_servant, *(const CORBA_char * *) _o_args[0], + *(CORBA_double * *)_o_args[1], _o_ev); +} + +void +_ORBIT_skel_small_Map_doNothing(POA_Map * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + void (*_impl_doNothing) + (PortableServer_Servant _servant, + CORBA_Environment * ev)) +{ + _impl_doNothing(_o_servant, _o_ev); +} + +void +_ORBIT_skel_small_Map_doOneWay(POA_Map * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + void (*_impl_doOneWay) (PortableServer_Servant + _servant, + const CORBA_char * + ignore, + CORBA_Environment * + ev)) +{ + _impl_doOneWay(_o_servant, *(const CORBA_char * *) _o_args[0], _o_ev); +} + +void +_ORBIT_skel_small_Map_PlaceFlag(POA_Map * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + void (*_impl_PlaceFlag) + (PortableServer_Servant _servant, + CORBA_Environment * ev)) +{ + _impl_PlaceFlag(_o_servant, _o_ev); +} + +void +_ORBIT_skel_small_Map_PointFromCoord(POA_Map * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + PointObj(*_impl_PointFromCoord) + (PortableServer_Servant _servant, + const CORBA_char * coord, + CORBA_Environment * ev)) +{ + *(PointObj *) _o_retval = + _impl_PointFromCoord(_o_servant, *(const CORBA_char * *) _o_args[0], + _o_ev); +} + +void +_ORBIT_skel_small_Map_View(POA_Map * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + void (*_impl_View) (PortableServer_Servant + _servant, + const PointObj * where, + CORBA_Environment * ev)) +{ + _impl_View(_o_servant, (const PointObj *) _o_args[0], _o_ev); +} + +void +_ORBIT_skel_small_Map_ViewAll(POA_Map * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + void (*_impl_ViewAll) (PortableServer_Servant + _servant, + const PointObjSequence * + where, + CORBA_Environment * ev)) +{ + _impl_ViewAll(_o_servant, (const CORBA_sequence_PointObj *) _o_args[0], + _o_ev); +} + +void +_ORBIT_skel_small_Map_Route(POA_Map * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + void (*_impl_Route) (PortableServer_Servant + _servant, + const PointObj * src, + const PointObj * dst, + CORBA_Environment * ev)) +{ + _impl_Route(_o_servant, (const PointObj *) _o_args[0], + (const PointObj *) _o_args[1], _o_ev); +} + +void +_ORBIT_skel_small_Map_Get(POA_Map * _o_servant, gpointer _o_retval, + gpointer * _o_args, CORBA_Context _o_ctx, + CORBA_Environment * _o_ev, + Mappel(*_impl_Get) (PortableServer_Servant _servant, + CORBA_Environment * ev)) +{ + *(Mappel *) _o_retval = _impl_Get(_o_servant, _o_ev); +} + +#endif +#if ( (TC_IMPL_TC_PointObj_0 == 'm') \ +&& (TC_IMPL_TC_PointObj_1 == 'a') \ +&& (TC_IMPL_TC_PointObj_2 == 'p') \ +) && !defined(TC_DEF_TC_PointObj) +#define TC_DEF_TC_PointObj 1 +static const char *anon_subnames_array0[] = { "lng", "lat", "height" }; +static const CORBA_TypeCode anon_subtypes_array1[] = + { (CORBA_TypeCode) & TC_CORBA_float_struct, +(CORBA_TypeCode) & TC_CORBA_float_struct, (CORBA_TypeCode) & TC_CORBA_float_struct }; +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +const struct CORBA_TypeCode_struct TC_PointObj_struct = { + {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC}, + CORBA_tk_struct, + 0, + 0, + ORBIT_ALIGNOF_CORBA_FLOAT, + 0, + 3, + (CORBA_TypeCode *) anon_subtypes_array1, + CORBA_OBJECT_NIL, + "PointObj", + "IDL:PointObj:1.0", + (char **) anon_subnames_array0, + NULL, + -1, + 0, + 0, 0 +}; +#endif +#if ( (TC_IMPL_TC_CORBA_sequence_PointObj_0 == 'm') \ +&& (TC_IMPL_TC_CORBA_sequence_PointObj_1 == 'a') \ +&& (TC_IMPL_TC_CORBA_sequence_PointObj_2 == 'p') \ +) && !defined(TC_DEF_TC_CORBA_sequence_PointObj) +#define TC_DEF_TC_CORBA_sequence_PointObj 1 +static const CORBA_TypeCode anon_subtypes_array4[] = + { (CORBA_TypeCode) & TC_PointObj_struct }; +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +const struct CORBA_TypeCode_struct TC_CORBA_sequence_PointObj_struct = { + {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC}, + CORBA_tk_sequence, + 0, + 0, + MAX(ORBIT_ALIGNOF_CORBA_POINTER, + MAX(ORBIT_ALIGNOF_CORBA_LONG, MAX(ORBIT_ALIGNOF_CORBA_STRUCT, 1))), + 0, + 1, + (CORBA_TypeCode *) anon_subtypes_array4, + CORBA_OBJECT_NIL, + NULL, + NULL, + NULL, + NULL, + -1, + 0, + 0, 0 +}; +#endif +#if ( (TC_IMPL_TC_CORBA_sequence_PointObj_0 == 'm') \ +&& (TC_IMPL_TC_CORBA_sequence_PointObj_1 == 'a') \ +&& (TC_IMPL_TC_CORBA_sequence_PointObj_2 == 'p') \ +) && !defined(TC_DEF_TC_CORBA_sequence_PointObj) +#define TC_DEF_TC_CORBA_sequence_PointObj 1 +static const CORBA_TypeCode anon_subtypes_array11[] = + { (CORBA_TypeCode) & TC_PointObj_struct }; +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +const struct CORBA_TypeCode_struct TC_CORBA_sequence_PointObj_struct = { + {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC}, + CORBA_tk_sequence, + 0, + 0, + MAX(ORBIT_ALIGNOF_CORBA_POINTER, + MAX(ORBIT_ALIGNOF_CORBA_LONG, MAX(ORBIT_ALIGNOF_CORBA_STRUCT, 1))), + 0, + 1, + (CORBA_TypeCode *) anon_subtypes_array11, + CORBA_OBJECT_NIL, + NULL, + NULL, + NULL, + NULL, + -1, + 0, + 0, 0 +}; +#endif +#if ( (TC_IMPL_TC_PointObjSequence_0 == 'm') \ +&& (TC_IMPL_TC_PointObjSequence_1 == 'a') \ +&& (TC_IMPL_TC_PointObjSequence_2 == 'p') \ +) && !defined(TC_DEF_TC_PointObjSequence) +#define TC_DEF_TC_PointObjSequence 1 +static const CORBA_TypeCode anon_subtypes_array14[] = + { (CORBA_TypeCode) & TC_CORBA_sequence_PointObj_struct }; +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +const struct CORBA_TypeCode_struct TC_PointObjSequence_struct = { + {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC}, + CORBA_tk_alias, + 0, + 0, + MAX(ORBIT_ALIGNOF_CORBA_POINTER, + MAX(ORBIT_ALIGNOF_CORBA_LONG, MAX(ORBIT_ALIGNOF_CORBA_STRUCT, 1))), + 0, + 1, + (CORBA_TypeCode *) anon_subtypes_array14, + CORBA_OBJECT_NIL, + "PointObjSequence", + "IDL:PointObjSequence:1.0", + NULL, + NULL, + -1, + 0, + 0, 0 +}; +#endif +#if ( (TC_IMPL_TC_Mappel_0 == 'm') \ +&& (TC_IMPL_TC_Mappel_1 == 'a') \ +&& (TC_IMPL_TC_Mappel_2 == 'p') \ +) && !defined(TC_DEF_TC_Mappel) +#define TC_DEF_TC_Mappel 1 +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +const struct CORBA_TypeCode_struct TC_Mappel_struct = { + {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC}, + CORBA_tk_objref, + 0, + 0, + ORBIT_ALIGNOF_CORBA_POINTER, + 0, + 0, + NULL, + CORBA_OBJECT_NIL, + "Mappel", + "IDL:Mappel:1.0", + NULL, + NULL, + -1, + 0, + 0, 0 +}; +#endif +#if ( (TC_IMPL_TC_Map_0 == 'm') \ +&& (TC_IMPL_TC_Map_1 == 'a') \ +&& (TC_IMPL_TC_Map_2 == 'p') \ +) && !defined(TC_DEF_TC_Map) +#define TC_DEF_TC_Map 1 +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +const struct CORBA_TypeCode_struct TC_Map_struct = { + {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC}, + CORBA_tk_objref, + 0, + 0, + ORBIT_ALIGNOF_CORBA_POINTER, + 0, + 0, + NULL, + CORBA_OBJECT_NIL, + "Map", + "IDL:Map:1.0", + NULL, + NULL, + -1, + 0, + 0, 0 +}; +#endif + +#ifndef ORBIT_IDL_C_IMODULE_map +CORBA_unsigned_long Mappel__classid = 0; +#endif + +#ifndef ORBIT_IDL_C_IMODULE_map +CORBA_unsigned_long Map__classid = 0; +#endif + +/* Interface type data */ + +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +ORBit_IMethod Mappel__imethods[] = { + { + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_void, "Test", 4, + 0} +}; +static CORBA_string Mappel__base_itypes[] = { + "IDL:omg.org/CORBA/Object:1.0" +}; + +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +ORBit_IInterface Mappel__iinterface = { + TC_Mappel, {1, 1, Mappel__imethods, FALSE}, + {1, 1, Mappel__base_itypes, FALSE} +}; + +static ORBit_IArg Map_mapString__arginfo[] = { + {TC_CORBA_string, ORBit_I_ARG_IN, "astring"}, + {TC_CORBA_double, ORBit_I_ARG_OUT | ORBit_I_COMMON_FIXED_SIZE, "anum"} +}; +static ORBit_IArg Map_doOneWay__arginfo[] = { + {TC_CORBA_string, ORBit_I_ARG_IN, "ignore"} +}; +static ORBit_IArg Map_PointFromCoord__arginfo[] = { + {TC_CORBA_string, ORBit_I_ARG_IN, "coord"} +}; +static ORBit_IArg Map_View__arginfo[] = { + {TC_PointObj, ORBit_I_ARG_IN | ORBit_I_COMMON_FIXED_SIZE, "where"} +}; +static ORBit_IArg Map_ViewAll__arginfo[] = { + {TC_PointObjSequence, ORBit_I_ARG_IN, "where"} +}; +static ORBit_IArg Map_Route__arginfo[] = { + {TC_PointObj, ORBit_I_ARG_IN | ORBit_I_COMMON_FIXED_SIZE, "src"}, + {TC_PointObj, ORBit_I_ARG_IN | ORBit_I_COMMON_FIXED_SIZE, "dst"} +}; + +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +ORBit_IMethod Map__imethods[] = { + { + {2, 2, Map_mapString__arginfo, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_Map, "mapString", 9, + 0} + , { + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_void, "doNothing", 9, + 0} + , { + {1, 1, Map_doOneWay__arginfo, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_void, "doOneWay", 8, + 0 | ORBit_I_METHOD_1_WAY} + , { + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_void, "PlaceFlag", 9, + 0} + , { + {1, 1, Map_PointFromCoord__arginfo, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_PointObj, "PointFromCoord", 14, + 0 | ORBit_I_COMMON_FIXED_SIZE} + , { + {1, 1, Map_View__arginfo, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_void, "View", 4, + 0} + , { + {1, 1, Map_ViewAll__arginfo, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_void, "ViewAll", 7, + 0} + , { + {2, 2, Map_Route__arginfo, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_void, "Route", 5, + 0} + , { + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + {0, 0, NULL, FALSE}, + TC_Mappel, "Get", 3, + 0} +}; +static CORBA_string Map__base_itypes[] = { + "IDL:omg.org/CORBA/Object:1.0" +}; + +#ifdef ORBIT_IDL_C_IMODULE_map +static +#endif +ORBit_IInterface Map__iinterface = { + TC_Map, {9, 9, Map__imethods, FALSE}, + {1, 1, Map__base_itypes, FALSE} +}; diff --git a/map-share.h b/map-share.h new file mode 100644 index 00000000..c540f30e --- /dev/null +++ b/map-share.h @@ -0,0 +1,2 @@ +void map_srv_start_poa(CORBA_ORB orb, CORBA_Environment * ev); +CORBA_Object map_srv_start_object(CORBA_Environment * ev, struct container *co); diff --git a/map-skelimpl.c b/map-skelimpl.c new file mode 100644 index 00000000..890df21c --- /dev/null +++ b/map-skelimpl.c @@ -0,0 +1,286 @@ +/* This is a template file generated by command */ +/* orbit-idl-2 --skeleton-impl map.idl */ +/* User must edit this file, inserting servant */ +/* specific code between markers. */ + +#include "map.h" + +/*** App-specific servant structures ***/ + +typedef struct +{ + POA_Mappel servant; + PortableServer_POA poa; + + /* ------ add private attributes here ------ */ + /* ------ ---------- end ------------ ------ */ +} impl_POA_Mappel; + +typedef struct +{ + POA_Map servant; + PortableServer_POA poa; + + /* ------ add private attributes here ------ */ + /* ------ ---------- end ------------ ------ */ +} impl_POA_Map; + +/*** Implementation stub prototypes ***/ + +static void impl_Mappel__destroy(impl_POA_Mappel * servant, + CORBA_Environment * ev); +static void +impl_Mappel_Test(impl_POA_Mappel * servant, CORBA_Environment * ev); + +static void impl_Map__destroy(impl_POA_Map * servant, CORBA_Environment * ev); +static Map +impl_Map_mapString(impl_POA_Map * servant, + const CORBA_char * astring, + CORBA_double * anum, CORBA_Environment * ev); + +static void +impl_Map_doNothing(impl_POA_Map * servant, CORBA_Environment * ev); + +static void +impl_Map_doOneWay(impl_POA_Map * servant, + const CORBA_char * ignore, CORBA_Environment * ev); + +static void +impl_Map_PlaceFlag(impl_POA_Map * servant, CORBA_Environment * ev); + +static PointObj +impl_Map_PointFromCoord(impl_POA_Map * servant, + const CORBA_char * coord, CORBA_Environment * ev); + +static void +impl_Map_View(impl_POA_Map * servant, + const PointObj * where, CORBA_Environment * ev); + +static void +impl_Map_ViewAll(impl_POA_Map * servant, + const PointObjSequence * where, CORBA_Environment * ev); + +static void +impl_Map_Route(impl_POA_Map * servant, + const PointObj * src, + const PointObj * dst, CORBA_Environment * ev); + +static Mappel impl_Map_Get(impl_POA_Map * servant, CORBA_Environment * ev); + +/*** epv structures ***/ + +static PortableServer_ServantBase__epv impl_Mappel_base_epv = { + NULL, /* _private data */ + (gpointer) & impl_Mappel__destroy, /* finalize routine */ + NULL, /* default_POA routine */ +}; +static POA_Mappel__epv impl_Mappel_epv = { + NULL, /* _private */ + (gpointer) & impl_Mappel_Test, + +}; +static PortableServer_ServantBase__epv impl_Map_base_epv = { + NULL, /* _private data */ + (gpointer) & impl_Map__destroy, /* finalize routine */ + NULL, /* default_POA routine */ +}; +static POA_Map__epv impl_Map_epv = { + NULL, /* _private */ + (gpointer) & impl_Map_mapString, + + (gpointer) & impl_Map_doNothing, + + (gpointer) & impl_Map_doOneWay, + + (gpointer) & impl_Map_PlaceFlag, + + (gpointer) & impl_Map_PointFromCoord, + + (gpointer) & impl_Map_View, + + (gpointer) & impl_Map_ViewAll, + + (gpointer) & impl_Map_Route, + + (gpointer) & impl_Map_Get, + +}; + +/*** vepv structures ***/ + +static POA_Mappel__vepv impl_Mappel_vepv = { + &impl_Mappel_base_epv, + &impl_Mappel_epv, +}; +static POA_Map__vepv impl_Map_vepv = { + &impl_Map_base_epv, + &impl_Map_epv, +}; + +/*** Stub implementations ***/ + +static Mappel +impl_Mappel__create(PortableServer_POA poa, CORBA_Environment * ev) +{ + Mappel retval; + impl_POA_Mappel *newservant; + PortableServer_ObjectId *objid; + + newservant = g_new0(impl_POA_Mappel, 1); + newservant->servant.vepv = &impl_Mappel_vepv; + newservant->poa = + (PortableServer_POA) CORBA_Object_duplicate((CORBA_Object) poa, ev); + POA_Mappel__init((PortableServer_Servant) newservant, ev); + /* Before servant is going to be activated all + * private attributes must be initialized. */ + + /* ------ init private attributes here ------ */ + /* ------ ---------- end ------------- ------ */ + + objid = PortableServer_POA_activate_object(poa, newservant, ev); + CORBA_free(objid); + retval = PortableServer_POA_servant_to_reference(poa, newservant, ev); + + return retval; +} + +static void +impl_Mappel__destroy(impl_POA_Mappel * servant, CORBA_Environment * ev) +{ + CORBA_Object_release((CORBA_Object) servant->poa, ev); + + /* No further remote method calls are delegated to + * servant and you may free your private attributes. */ + /* ------ free private attributes here ------ */ + /* ------ ---------- end ------------- ------ */ + + POA_Mappel__fini((PortableServer_Servant) servant, ev); +} + +static void +impl_Mappel_Test(impl_POA_Mappel * servant, CORBA_Environment * ev) +{ + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ +} + +static Map +impl_Map__create(PortableServer_POA poa, CORBA_Environment * ev) +{ + Map retval; + impl_POA_Map *newservant; + PortableServer_ObjectId *objid; + + newservant = g_new0(impl_POA_Map, 1); + newservant->servant.vepv = &impl_Map_vepv; + newservant->poa = + (PortableServer_POA) CORBA_Object_duplicate((CORBA_Object) poa, ev); + POA_Map__init((PortableServer_Servant) newservant, ev); + /* Before servant is going to be activated all + * private attributes must be initialized. */ + + /* ------ init private attributes here ------ */ + /* ------ ---------- end ------------- ------ */ + + objid = PortableServer_POA_activate_object(poa, newservant, ev); + CORBA_free(objid); + retval = PortableServer_POA_servant_to_reference(poa, newservant, ev); + + return retval; +} + +static void +impl_Map__destroy(impl_POA_Map * servant, CORBA_Environment * ev) +{ + CORBA_Object_release((CORBA_Object) servant->poa, ev); + + /* No further remote method calls are delegated to + * servant and you may free your private attributes. */ + /* ------ free private attributes here ------ */ + /* ------ ---------- end ------------- ------ */ + + POA_Map__fini((PortableServer_Servant) servant, ev); +} + +static Map +impl_Map_mapString(impl_POA_Map * servant, + const CORBA_char * astring, + CORBA_double * anum, CORBA_Environment * ev) +{ + Map retval; + + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ + + return retval; +} + +static void +impl_Map_doNothing(impl_POA_Map * servant, CORBA_Environment * ev) +{ + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ +} + +static void +impl_Map_doOneWay(impl_POA_Map * servant, + const CORBA_char * ignore, CORBA_Environment * ev) +{ + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ +} + +static void +impl_Map_PlaceFlag(impl_POA_Map * servant, CORBA_Environment * ev) +{ + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ +} + +static PointObj +impl_Map_PointFromCoord(impl_POA_Map * servant, + const CORBA_char * coord, CORBA_Environment * ev) +{ + PointObj retval; + + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ + + return retval; +} + +static void +impl_Map_View(impl_POA_Map * servant, + const PointObj * where, CORBA_Environment * ev) +{ + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ +} + +static void +impl_Map_ViewAll(impl_POA_Map * servant, + const PointObjSequence * where, CORBA_Environment * ev) +{ + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ +} + +static void +impl_Map_Route(impl_POA_Map * servant, + const PointObj * src, + const PointObj * dst, CORBA_Environment * ev) +{ + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ +} + +static Mappel +impl_Map_Get(impl_POA_Map * servant, CORBA_Environment * ev) +{ + Mappel retval; + + /* ------ insert method code here ------ */ + /* ------ ---------- end ------------ ------ */ + + return retval; +} diff --git a/map-skels.c b/map-skels.c new file mode 100644 index 00000000..bcc99254 --- /dev/null +++ b/map-skels.c @@ -0,0 +1,184 @@ +/* + * This file was generated by orbit-idl-2 - DO NOT EDIT! + */ + +#include <string.h> +#define ORBIT2_STUBS_API +#include "map.h" + +static ORBitSmallSkeleton +get_skel_small_Mappel(POA_Mappel * servant, + const char *opname, gpointer * m_data, gpointer * impl) +{ + switch (opname[0]) { + case 'T': + if (strcmp((opname + 1), "est")) + break; + *impl = (gpointer) servant->vepv->Mappel_epv->Test; + *m_data = (gpointer) & Mappel__iinterface.methods._buffer[0]; + return (ORBitSmallSkeleton) _ORBIT_skel_small_Mappel_Test; + break; + default: + break; + } + return NULL; +} + +void +POA_Mappel__init(PortableServer_Servant servant, CORBA_Environment * env) +{ + static PortableServer_ClassInfo class_info = + { NULL, (ORBit_small_impl_finder) & get_skel_small_Mappel, +"IDL:Mappel:1.0", &Mappel__classid, NULL, &Mappel__iinterface }; + PortableServer_ServantBase__init(((PortableServer_ServantBase *) servant), + env); + ORBit_skel_class_register(&class_info, servant, POA_Mappel__fini, + ORBIT_VEPV_OFFSET(POA_Mappel__vepv, Mappel_epv), + (CORBA_unsigned_long) 0); +} + +void +POA_Mappel__fini(PortableServer_Servant servant, CORBA_Environment * env) +{ + PortableServer_ServantBase__fini(servant, env); +} + +static ORBitSmallSkeleton +get_skel_small_Map(POA_Map * servant, + const char *opname, gpointer * m_data, gpointer * impl) +{ + switch (opname[0]) { + case 'G': + if (strcmp((opname + 1), "et")) + break; + *impl = (gpointer) servant->vepv->Map_epv->Get; + *m_data = (gpointer) & Map__iinterface.methods._buffer[8]; + return (ORBitSmallSkeleton) _ORBIT_skel_small_Map_Get; + break; + case 'P': + switch (opname[1]) { + case 'l': + if (strcmp((opname + 2), "aceFlag")) + break; + *impl = (gpointer) servant->vepv->Map_epv->PlaceFlag; + *m_data = (gpointer) & Map__iinterface.methods._buffer[3]; + return (ORBitSmallSkeleton) _ORBIT_skel_small_Map_PlaceFlag; + break; + case 'o': + if (strcmp((opname + 2), "intFromCoord")) + break; + *impl = (gpointer) servant->vepv->Map_epv->PointFromCoord; + *m_data = (gpointer) & Map__iinterface.methods._buffer[4]; + return (ORBitSmallSkeleton) _ORBIT_skel_small_Map_PointFromCoord; + break; + default: + break; + } + break; + case 'R': + if (strcmp((opname + 1), "oute")) + break; + *impl = (gpointer) servant->vepv->Map_epv->Route; + *m_data = (gpointer) & Map__iinterface.methods._buffer[7]; + return (ORBitSmallSkeleton) _ORBIT_skel_small_Map_Route; + break; + case 'V': + switch (opname[1]) { + case 'i': + switch (opname[2]) { + case 'e': + switch (opname[3]) { + case 'w': + switch (opname[4]) { + case '\0': + *impl = (gpointer) servant->vepv->Map_epv->View; + *m_data = + (gpointer) & Map__iinterface.methods. + _buffer[5]; + return (ORBitSmallSkeleton) + _ORBIT_skel_small_Map_View; + break; + case 'A': + if (strcmp((opname + 5), "ll")) + break; + *impl = + (gpointer) servant->vepv->Map_epv->ViewAll; + *m_data = + (gpointer) & Map__iinterface.methods. + _buffer[6]; + return (ORBitSmallSkeleton) + _ORBIT_skel_small_Map_ViewAll; + break; + default: + break; + } + break; + default: + break; + } + break; + default: + break; + } + break; + default: + break; + } + break; + case 'd': + switch (opname[1]) { + case 'o': + switch (opname[2]) { + case 'N': + if (strcmp((opname + 3), "othing")) + break; + *impl = (gpointer) servant->vepv->Map_epv->doNothing; + *m_data = (gpointer) & Map__iinterface.methods._buffer[1]; + return (ORBitSmallSkeleton) _ORBIT_skel_small_Map_doNothing; + break; + case 'O': + if (strcmp((opname + 3), "neWay")) + break; + *impl = (gpointer) servant->vepv->Map_epv->doOneWay; + *m_data = (gpointer) & Map__iinterface.methods._buffer[2]; + return (ORBitSmallSkeleton) _ORBIT_skel_small_Map_doOneWay; + break; + default: + break; + } + break; + default: + break; + } + break; + case 'm': + if (strcmp((opname + 1), "apString")) + break; + *impl = (gpointer) servant->vepv->Map_epv->mapString; + *m_data = (gpointer) & Map__iinterface.methods._buffer[0]; + return (ORBitSmallSkeleton) _ORBIT_skel_small_Map_mapString; + break; + default: + break; + } + return NULL; +} + +void +POA_Map__init(PortableServer_Servant servant, CORBA_Environment * env) +{ + static PortableServer_ClassInfo class_info = + { NULL, (ORBit_small_impl_finder) & get_skel_small_Map, "IDL:Map:1.0", +&Map__classid, NULL, &Map__iinterface }; + PortableServer_ServantBase__init(((PortableServer_ServantBase *) servant), + env); + ORBit_skel_class_register(&class_info, servant, POA_Map__fini, + ORBIT_VEPV_OFFSET(POA_Map__vepv, Map_epv), + (CORBA_unsigned_long) 0); +} + +void +POA_Map__fini(PortableServer_Servant servant, CORBA_Environment * env) +{ + PortableServer_ServantBase__fini(servant, env); +} diff --git a/map-srv.c b/map-srv.c new file mode 100644 index 00000000..6d38db03 --- /dev/null +++ b/map-srv.c @@ -0,0 +1,262 @@ +/* + * CORBA map test + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Author: Elliot Lee <sopwith@redhat.com> + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include "map.h" +#include "coord.h" +#include "route.h" +#include "transform.h" +#include "statusbar.h" +#include "map-share.h" +#include "main.h" +#include <math.h> + +/** + This is used by map-server.c and map-local.c + It uses map-skels.c +**/ + +static Map the_map_client; +static CORBA_ORB the_orb; +static PortableServer_POA the_poa; +static PortableServer_ObjectId *the_objid; + +#if 0 +static GtkMap *global_map; +#endif + +static CORBA_Object +do_mapString(PortableServer_Servant servant, + const CORBA_char * astring, + CORBA_double * outnum, CORBA_Environment * ev) +{ + + g_message("[server] %s", astring); + + *outnum = rand() % 100; + + return CORBA_Object_duplicate(the_map_client, ev); +} + +static void +do_PlaceFlag(PortableServer_Servant servant, CORBA_Environment * ev) +{ + + g_message("[server PlaceFlag]"); + +} + + +static void +do_doNothing(PortableServer_Servant servant, CORBA_Environment * ev) +{ +} + +PortableServer_ServantBase__epv base_epv = { + NULL, + NULL, + NULL +}; + +PointObj +do_PointFromCoord(PortableServer_Servant _servant, const CORBA_char * coord, CORBA_Environment * ev) +{ + PointObj ret; + double lat,lng,lat_deg,lng_deg; + char lat_c,lng_c; + + printf("String=%s\n", coord); + sscanf(coord,"%lf %c %lf %c",&lat, &lat_c, &lng, &lng_c); + + printf("lat=%f lng=%f\n", lat, lng); + + lat_deg=floor(lat/100); + lat-=lat_deg*100; + lat_deg+=lat/60; + + lng_deg=floor(lng/100); + lng-=lng_deg*100; + lng_deg+=lng/60; + + ret.lat=lat_deg; + ret.lng=lng_deg; + printf("lat_deg=%f lng_deg=%f\n", lat_deg, lng_deg); + + ret.height=0; + return ret; +} + +static void +PointObj_to_coor(const PointObj *pnt, struct coord *c) +{ + double lng, lat; + lng=pnt->lng; + lat=pnt->lat; + transform_mercator(&lng, &lat, c); +} + +void +do_View(PortableServer_Servant _servant, const PointObj *pnt, CORBA_Environment * ev) +{ + unsigned long scale; + struct coord c; +#if 0 + GtkMap *map=global_map; + + map_get_view(map, NULL, NULL, &scale); + PointObj_to_coor(pnt, &c); + map_set_view(map, c.x, c.y, scale); +#endif +} + + +void +do_Route(PortableServer_Servant _servant, const PointObj *src, const PointObj *dst, CORBA_Environment * ev) +{ +#if 0 + struct coord c_src,c_dst; + GtkMap *map=global_map; + unsigned long scale; + + PointObj_to_coor(src, &c_src); + PointObj_to_coor(dst, &c_dst); + route_set_position(map->container->route, &c_src); + route_set_destination(map->container->route, &c_dst); + + map_get_view(map, NULL, NULL, &scale); + map_set_view(map, c_src.x, c_src.y, scale); + + if (map->container->statusbar && map->container->statusbar->statusbar_route_update) + map->container->statusbar->statusbar_route_update(map->container->statusbar, map->container->route); +#endif +} + +POA_Mappel__epv mappel_epv = { +}; + +Mappel do_Get(PortableServer_Servant _servant, CORBA_Environment * ev) +{ + Mappel retval=NULL; +#if 0 + impl_POA_Mappel *newservant; + PortableServer_ObjectId *objid; + + printf("Do_Get\n"); + newservant = g_new0(impl_POA_Mappel, 1); + newservant->servant.vepv = &mappel_epv; + newservant->poa = poa; + POA_Mappel__init((PortableServer_Servant) newservant, ev); + objid = PortableServer_POA_activate_object(poa, newservant, ev); + CORBA_free(objid); + retval = PortableServer_POA_servant_to_reference(poa, newservant, ev); +#endif + + return retval; +} + +POA_Map__epv map_epv = { + mapString: do_mapString, + doNothing: do_doNothing, + PlaceFlag: do_PlaceFlag, + PointFromCoord: do_PointFromCoord, + View: do_View, + Route: do_Route, + Get: do_Get, + }; +POA_Map__vepv poa_map_vepv = { &base_epv, &map_epv }; +POA_Map poa_map_servant = { NULL, &poa_map_vepv }; + + +void map_srv_start_poa(CORBA_ORB orb, CORBA_Environment * ev) +{ + PortableServer_POAManager mgr; + + the_orb = orb; + the_poa = (PortableServer_POA) + CORBA_ORB_resolve_initial_references(orb, "RootPOA", ev); + + mgr = PortableServer_POA__get_the_POAManager(the_poa, ev); + PortableServer_POAManager_activate(mgr, ev); + CORBA_Object_release((CORBA_Object) mgr, ev); +} + +CORBA_Object map_srv_start_object(CORBA_Environment * ev, struct container *co) +{ + POA_Map__init(&poa_map_servant, ev); + if (ev->_major) { + printf("object__init failed: %d\n", ev->_major); + exit(1); + } + the_objid = PortableServer_POA_activate_object(the_poa, + &poa_map_servant, + ev); + if (ev->_major) { + printf("activate_object failed: %d\n", ev->_major); + exit(1); + } + the_map_client = PortableServer_POA_servant_to_reference(the_poa, + &poa_map_servant, + ev); + if (ev->_major) { + printf("servant_to_reference failed: %d\n", ev->_major); + exit(1); + } +#if 0 + global_map=map; +#endif + return the_map_client; +} + +void map_srv_finish_object(CORBA_Environment * ev) +{ + CORBA_Object_release(the_map_client, ev); + if (ev->_major) { + printf("object_release failed: %d\n", ev->_major); + exit(1); + } + the_map_client = 0; + PortableServer_POA_deactivate_object(the_poa, the_objid, ev); + if (ev->_major) { + printf("deactivate_object failed: %d\n", ev->_major); + exit(1); + } + CORBA_free(the_objid); + the_objid = 0; + POA_Map__fini(&poa_map_servant, ev); + if (ev->_major) { + printf("object__fini failed: %d\n", ev->_major); + exit(1); + } +} + + +void map_srv_finish_poa(CORBA_Environment * ev) +{ + CORBA_Object_release((CORBA_Object) the_poa, ev); + if (ev->_major) { + printf("POA release failed: %d\n", ev->_major); + exit(1); + } + the_poa = 0; +} + diff --git a/map-stubs.c b/map-stubs.c new file mode 100644 index 00000000..fa7d0f34 --- /dev/null +++ b/map-stubs.c @@ -0,0 +1,135 @@ +/* + * This file was generated by orbit-idl-2 - DO NOT EDIT! + */ + +#include <string.h> +#define ORBIT2_STUBS_API +#include "map.h" + +void +Mappel_Test(Mappel _obj, CORBA_Environment * ev) +{ + ORBit_c_stub_invoke(_obj, &Mappel__iinterface.methods, 0, NULL, NULL, NULL, + ev, Mappel__classid, G_STRUCT_OFFSET(POA_Mappel__epv, + Test), + (ORBitSmallSkeleton) _ORBIT_skel_small_Mappel_Test); + +} + +Map +Map_mapString(Map _obj, const CORBA_char * astring, CORBA_double * anum, + CORBA_Environment * ev) +{ + Map _ORBIT_retval; + gpointer _args[2]; + + _args[0] = (gpointer) & astring; + _args[1] = &anum; + ORBit_c_stub_invoke(_obj, &Map__iinterface.methods, 0, &_ORBIT_retval, + _args, NULL, ev, Map__classid, + G_STRUCT_OFFSET(POA_Map__epv, mapString), + (ORBitSmallSkeleton) _ORBIT_skel_small_Map_mapString); + + return _ORBIT_retval; +} + +void +Map_doNothing(Map _obj, CORBA_Environment * ev) +{ + ORBit_c_stub_invoke(_obj, &Map__iinterface.methods, 1, NULL, NULL, NULL, + ev, Map__classid, G_STRUCT_OFFSET(POA_Map__epv, + doNothing), + (ORBitSmallSkeleton) _ORBIT_skel_small_Map_doNothing); + +} + +void +Map_doOneWay(Map _obj, const CORBA_char * ignore, CORBA_Environment * ev) +{ + gpointer _args[1]; + + _args[0] = (gpointer) & ignore; + ORBit_c_stub_invoke(_obj, &Map__iinterface.methods, 2, NULL, _args, NULL, + ev, Map__classid, G_STRUCT_OFFSET(POA_Map__epv, + doOneWay), + (ORBitSmallSkeleton) _ORBIT_skel_small_Map_doOneWay); + +} + +void +Map_PlaceFlag(Map _obj, CORBA_Environment * ev) +{ + ORBit_c_stub_invoke(_obj, &Map__iinterface.methods, 3, NULL, NULL, NULL, + ev, Map__classid, G_STRUCT_OFFSET(POA_Map__epv, + PlaceFlag), + (ORBitSmallSkeleton) _ORBIT_skel_small_Map_PlaceFlag); + +} + +PointObj +Map_PointFromCoord(Map _obj, const CORBA_char * coord, CORBA_Environment * ev) +{ + PointObj _ORBIT_retval; + gpointer _args[1]; + + _args[0] = (gpointer) & coord; + ORBit_c_stub_invoke(_obj, &Map__iinterface.methods, 4, &_ORBIT_retval, + _args, NULL, ev, Map__classid, + G_STRUCT_OFFSET(POA_Map__epv, PointFromCoord), + (ORBitSmallSkeleton) + _ORBIT_skel_small_Map_PointFromCoord); + + return _ORBIT_retval; +} + +void +Map_View(Map _obj, const PointObj * where, CORBA_Environment * ev) +{ + gpointer _args[1]; + + _args[0] = (gpointer) where; + ORBit_c_stub_invoke(_obj, &Map__iinterface.methods, 5, NULL, _args, NULL, + ev, Map__classid, G_STRUCT_OFFSET(POA_Map__epv, View), + (ORBitSmallSkeleton) _ORBIT_skel_small_Map_View); + +} + +void +Map_ViewAll(Map _obj, const PointObjSequence * where, CORBA_Environment * ev) +{ + gpointer _args[1]; + + _args[0] = (gpointer) where; + ORBit_c_stub_invoke(_obj, &Map__iinterface.methods, 6, NULL, _args, NULL, + ev, Map__classid, G_STRUCT_OFFSET(POA_Map__epv, + ViewAll), + (ORBitSmallSkeleton) _ORBIT_skel_small_Map_ViewAll); + +} + +void +Map_Route(Map _obj, const PointObj * src, const PointObj * dst, + CORBA_Environment * ev) +{ + gpointer _args[2]; + + _args[0] = (gpointer) src; + _args[1] = (gpointer) dst; + ORBit_c_stub_invoke(_obj, &Map__iinterface.methods, 7, NULL, _args, NULL, + ev, Map__classid, G_STRUCT_OFFSET(POA_Map__epv, Route), + (ORBitSmallSkeleton) _ORBIT_skel_small_Map_Route); + +} + +Mappel +Map_Get(Map _obj, CORBA_Environment * ev) +{ + Mappel _ORBIT_retval; + + ORBit_c_stub_invoke(_obj, &Map__iinterface.methods, 8, &_ORBIT_retval, + NULL, NULL, ev, Map__classid, + G_STRUCT_OFFSET(POA_Map__epv, Get), + (ORBitSmallSkeleton) _ORBIT_skel_small_Map_Get); + + return _ORBIT_retval; +} @@ -0,0 +1,341 @@ +/* + * This file was generated by orbit-idl-2 - DO NOT EDIT! + */ + +#ifndef map_H +#define map_H 1 +#include <glib.h> +#define ORBIT_IDL_SERIAL 20 +#include <orbit/orbit-types.h> + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +/** typedefs **/ +#if !defined(_PointObj_defined) +#define _PointObj_defined 1 + typedef struct PointObj_type PointObj; + struct PointObj_type + { + CORBA_float lng; + CORBA_float lat; + CORBA_float height; + }; + +#if !defined(TC_IMPL_TC_PointObj_0) +#define TC_IMPL_TC_PointObj_0 'm' +#define TC_IMPL_TC_PointObj_1 'a' +#define TC_IMPL_TC_PointObj_2 'p' +#ifdef ORBIT_IDL_C_IMODULE_map + static +#else + extern +#endif + const struct CORBA_TypeCode_struct TC_PointObj_struct; +#define TC_PointObj ((CORBA_TypeCode)&TC_PointObj_struct) +#endif +#define PointObj__alloc() ((PointObj *)ORBit_small_alloc (TC_PointObj)) +#define PointObj__freekids(m,d) ORBit_small_freekids (TC_PointObj,(m),(d)) +#endif +#if !defined(ORBIT_DECL_CORBA_sequence_PointObj) +#define ORBIT_DECL_CORBA_sequence_PointObj 1 +#define ORBIT_IMPL_CORBA_sequence_PointObj_0 'm' +#define ORBIT_IMPL_CORBA_sequence_PointObj_1 'a' +#define ORBIT_IMPL_CORBA_sequence_PointObj_2 'p' +#if !defined(_CORBA_sequence_PointObj_defined) +#define _CORBA_sequence_PointObj_defined 1 + typedef struct + { + CORBA_unsigned_long _maximum, + _length; + PointObj *_buffer; + CORBA_boolean _release; + } CORBA_sequence_PointObj; +#endif +#if !defined(TC_IMPL_TC_CORBA_sequence_PointObj_0) +#define TC_IMPL_TC_CORBA_sequence_PointObj_0 'm' +#define TC_IMPL_TC_CORBA_sequence_PointObj_1 'a' +#define TC_IMPL_TC_CORBA_sequence_PointObj_2 'p' +#ifdef ORBIT_IDL_C_IMODULE_map + static +#else + extern +#endif + const struct CORBA_TypeCode_struct TC_CORBA_sequence_PointObj_struct; +#define TC_CORBA_sequence_PointObj ((CORBA_TypeCode)&TC_CORBA_sequence_PointObj_struct) +#endif +#define CORBA_sequence_PointObj__alloc() ((CORBA_sequence_PointObj *)ORBit_small_alloc (TC_CORBA_sequence_PointObj)) +#define CORBA_sequence_PointObj__freekids(m,d) ORBit_small_freekids (TC_CORBA_sequence_PointObj,(m),(d)) +#define CORBA_sequence_PointObj_allocbuf(l) ((PointObj*)ORBit_small_allocbuf (TC_CORBA_sequence_PointObj, (l))) +#define CORBA_sequence_PointObj_allocbuf(l) ((PointObj*)ORBit_small_allocbuf (TC_CORBA_sequence_PointObj, (l))) +#endif +#if !defined(_PointObjSequence_defined) +#define _PointObjSequence_defined 1 + typedef CORBA_sequence_PointObj PointObjSequence; +#define PointObjSequence_marshal(x,y,z) CORBA_sequence_PointObj_marshal((x),(y),(z)) +#define PointObjSequence_demarshal(x,y,z,i) CORBA_sequence_PointObj_demarshal((x),(y),(z),(i)) +#if !defined(TC_IMPL_TC_PointObjSequence_0) +#define TC_IMPL_TC_PointObjSequence_0 'm' +#define TC_IMPL_TC_PointObjSequence_1 'a' +#define TC_IMPL_TC_PointObjSequence_2 'p' +#ifdef ORBIT_IDL_C_IMODULE_map + static +#else + extern +#endif + const struct CORBA_TypeCode_struct TC_PointObjSequence_struct; +#define TC_PointObjSequence ((CORBA_TypeCode)&TC_PointObjSequence_struct) +#endif +#define PointObjSequence__alloc() ((PointObjSequence *)ORBit_small_alloc (TC_CORBA_sequence_PointObj)) +#define PointObjSequence__freekids(m,d) ORBit_small_freekids (TC_CORBA_sequence_PointObj,(m),(d)) +#define PointObjSequence_allocbuf(l) ((PointObj*)ORBit_small_allocbuf (TC_CORBA_sequence_PointObj, (l))) +#endif +#if !defined(ORBIT_DECL_Mappel) && !defined(_Mappel_defined) +#define ORBIT_DECL_Mappel 1 +#define _Mappel_defined 1 +#define Mappel__freekids CORBA_Object__freekids + typedef CORBA_Object Mappel; + extern CORBA_unsigned_long Mappel__classid; +#if !defined(TC_IMPL_TC_Mappel_0) +#define TC_IMPL_TC_Mappel_0 'm' +#define TC_IMPL_TC_Mappel_1 'a' +#define TC_IMPL_TC_Mappel_2 'p' +#ifdef ORBIT_IDL_C_IMODULE_map + static +#else + extern +#endif + const struct CORBA_TypeCode_struct TC_Mappel_struct; +#define TC_Mappel ((CORBA_TypeCode)&TC_Mappel_struct) +#endif +#endif +#if !defined(ORBIT_DECL_Map) && !defined(_Map_defined) +#define ORBIT_DECL_Map 1 +#define _Map_defined 1 +#define Map__freekids CORBA_Object__freekids + typedef CORBA_Object Map; + extern CORBA_unsigned_long Map__classid; +#if !defined(TC_IMPL_TC_Map_0) +#define TC_IMPL_TC_Map_0 'm' +#define TC_IMPL_TC_Map_1 'a' +#define TC_IMPL_TC_Map_2 'p' +#ifdef ORBIT_IDL_C_IMODULE_map + static +#else + extern +#endif + const struct CORBA_TypeCode_struct TC_Map_struct; +#define TC_Map ((CORBA_TypeCode)&TC_Map_struct) +#endif +#endif + +/** POA structures **/ +#ifndef _defined_POA_Mappel +#define _defined_POA_Mappel 1 + typedef struct + { + void *_private; + void (*Test) (PortableServer_Servant _servant, CORBA_Environment * ev); + } POA_Mappel__epv; + typedef struct + { + PortableServer_ServantBase__epv *_base_epv; + POA_Mappel__epv *Mappel_epv; + } POA_Mappel__vepv; + typedef struct + { + void *_private; + POA_Mappel__vepv *vepv; + } POA_Mappel; + extern void POA_Mappel__init(PortableServer_Servant servant, + CORBA_Environment * ev); + extern void POA_Mappel__fini(PortableServer_Servant servant, + CORBA_Environment * ev); +#endif /* _defined_POA_Mappel */ +#ifndef _defined_POA_Map +#define _defined_POA_Map 1 + typedef struct + { + void *_private; + Map(*mapString) (PortableServer_Servant _servant, + const CORBA_char * astring, CORBA_double * anum, + CORBA_Environment * ev); + void (*doNothing) (PortableServer_Servant _servant, + CORBA_Environment * ev); + void (*doOneWay) (PortableServer_Servant _servant, + const CORBA_char * ignore, CORBA_Environment * ev); + void (*PlaceFlag) (PortableServer_Servant _servant, + CORBA_Environment * ev); + PointObj(*PointFromCoord) (PortableServer_Servant _servant, + const CORBA_char * coord, + CORBA_Environment * ev); + void (*View) (PortableServer_Servant _servant, const PointObj * where, + CORBA_Environment * ev); + void (*ViewAll) (PortableServer_Servant _servant, + const PointObjSequence * where, + CORBA_Environment * ev); + void (*Route) (PortableServer_Servant _servant, const PointObj * src, + const PointObj * dst, CORBA_Environment * ev); + Mappel(*Get) (PortableServer_Servant _servant, CORBA_Environment * ev); + } POA_Map__epv; + typedef struct + { + PortableServer_ServantBase__epv *_base_epv; + POA_Map__epv *Map_epv; + } POA_Map__vepv; + typedef struct + { + void *_private; + POA_Map__vepv *vepv; + } POA_Map; + extern void POA_Map__init(PortableServer_Servant servant, + CORBA_Environment * ev); + extern void POA_Map__fini(PortableServer_Servant servant, + CORBA_Environment * ev); +#endif /* _defined_POA_Map */ + +/** skel prototypes **/ + void _ORBIT_skel_small_Mappel_Test(POA_Mappel * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, + CORBA_Context ctx, + CORBA_Environment * ev, + void (*_impl_Test) + (PortableServer_Servant _servant, + CORBA_Environment * ev)); + void _ORBIT_skel_small_Map_mapString(POA_Map * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, + CORBA_Context ctx, + CORBA_Environment * ev, + Map(*_impl_mapString) + (PortableServer_Servant _servant, + const CORBA_char * astring, + CORBA_double * anum, + CORBA_Environment * ev)); + void _ORBIT_skel_small_Map_doNothing(POA_Map * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, + CORBA_Context ctx, + CORBA_Environment * ev, + void (*_impl_doNothing) + (PortableServer_Servant _servant, + CORBA_Environment * ev)); + void _ORBIT_skel_small_Map_doOneWay(POA_Map * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, + CORBA_Context ctx, + CORBA_Environment * ev, + void (*_impl_doOneWay) + (PortableServer_Servant _servant, + const CORBA_char * ignore, + CORBA_Environment * ev)); + void _ORBIT_skel_small_Map_PlaceFlag(POA_Map * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, + CORBA_Context ctx, + CORBA_Environment * ev, + void (*_impl_PlaceFlag) + (PortableServer_Servant _servant, + CORBA_Environment * ev)); + void _ORBIT_skel_small_Map_PointFromCoord(POA_Map * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, + CORBA_Context ctx, + CORBA_Environment * ev, + PointObj(*_impl_PointFromCoord) + (PortableServer_Servant _servant, + const CORBA_char * coord, + CORBA_Environment * ev)); + void _ORBIT_skel_small_Map_View(POA_Map * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, CORBA_Context ctx, + CORBA_Environment * ev, + void (*_impl_View) (PortableServer_Servant + _servant, + const PointObj * where, + CORBA_Environment * + ev)); + void _ORBIT_skel_small_Map_ViewAll(POA_Map * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, + CORBA_Context ctx, + CORBA_Environment * ev, + void (*_impl_ViewAll) + (PortableServer_Servant _servant, + const PointObjSequence * where, + CORBA_Environment * ev)); + void _ORBIT_skel_small_Map_Route(POA_Map * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, CORBA_Context ctx, + CORBA_Environment * ev, + void (*_impl_Route) + (PortableServer_Servant _servant, + const PointObj * src, + const PointObj * dst, + CORBA_Environment * ev)); + void _ORBIT_skel_small_Map_Get(POA_Map * _ORBIT_servant, + gpointer _ORBIT_retval, + gpointer * _ORBIT_args, CORBA_Context ctx, + CORBA_Environment * ev, + Mappel(*_impl_Get) (PortableServer_Servant + _servant, + CORBA_Environment * + ev)); + +/** stub prototypes **/ + void Mappel_Test(Mappel _obj, CORBA_Environment * ev); + Map Map_mapString(Map _obj, const CORBA_char * astring, + CORBA_double * anum, CORBA_Environment * ev); + void Map_doNothing(Map _obj, CORBA_Environment * ev); + void Map_doOneWay(Map _obj, const CORBA_char * ignore, + CORBA_Environment * ev); + void Map_PlaceFlag(Map _obj, CORBA_Environment * ev); + PointObj Map_PointFromCoord(Map _obj, const CORBA_char * coord, + CORBA_Environment * ev); + void Map_View(Map _obj, const PointObj * where, CORBA_Environment * ev); + void Map_ViewAll(Map _obj, const PointObjSequence * where, + CORBA_Environment * ev); + void Map_Route(Map _obj, const PointObj * src, const PointObj * dst, + CORBA_Environment * ev); + Mappel Map_Get(Map _obj, CORBA_Environment * ev); +#include <orbit/orb-core/orbit-interface.h> + +#ifdef ORBIT_IDL_C_IMODULE_map + static +#else + extern +#endif + ORBit_IInterface Mappel__iinterface; +#define Mappel_IMETHODS_LEN 1 +#ifdef ORBIT_IDL_C_IMODULE_map + static +#else + extern +#endif + ORBit_IMethod Mappel__imethods[Mappel_IMETHODS_LEN]; +#ifdef ORBIT_IDL_C_IMODULE_map + static +#else + extern +#endif + ORBit_IInterface Map__iinterface; +#define Map_IMETHODS_LEN 9 +#ifdef ORBIT_IDL_C_IMODULE_map + static +#else + extern +#endif + ORBit_IMethod Map__imethods[Map_IMETHODS_LEN]; +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#ifndef EXCLUDE_ORBIT_H +#include <orbit/orbit.h> + +#endif /* EXCLUDE_ORBIT_H */ +#endif +#undef ORBIT_IDL_SERIAL diff --git a/map.idl b/map.idl new file mode 100644 index 00000000..a68c7d54 --- /dev/null +++ b/map.idl @@ -0,0 +1,25 @@ +struct PointObj { + float lng; /* degrees */ + float lat; /* degrees */ + float height; /* meters */ +}; + +typedef sequence<PointObj> PointObjSequence; + +interface Mappel { + void Test(); +}; + +interface Map { + Map mapString (in string astring, + out double anum); + void doNothing (); + oneway void doOneWay (in string ignore); + void PlaceFlag(); + PointObj PointFromCoord(in string coord); + void View(in PointObj where); + void ViewAll(in PointObjSequence where); + void Route(in PointObj src, in PointObj dst); + Mappel Get(); +}; + diff --git a/map.ior b/map.ior new file mode 100644 index 00000000..cb892efd --- /dev/null +++ b/map.ior @@ -0,0 +1 @@ +IOR:010f00000c00000049444c3a4d61703a312e3000030000000054424f540000000101020005000000554e495800736f630900000070636d617274696e00005f6d2c0000002f746d702f6f726269742d6d617274696e2f6c696e632d353830642d302d363264393631633861336164360000000000caaedfba58000000010102312c0000002f746d702f6f726269742d6d617274696e2f6c696e632d353830642d302d3632643936316338613361643600000000001c00000000000000ad20380865f02828dd29282828282828010000007c08e43c0100000048000000016c654202000000050000001c00000000000000ad20380865f02828dd29282828282828010000007c08e43c0100000014000000010f000001000105000000000901010000000000 diff --git a/map_data.c b/map_data.c new file mode 100644 index 00000000..cc384f03 --- /dev/null +++ b/map_data.c @@ -0,0 +1,112 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <glib.h> +#include "file.h" +#include "block.h" +#include "map_data.h" +#include "log.h" + +static struct map_data *load_map(char *dirname) +{ + int i,len=strlen(dirname); + char *filename[file_end]; + char file[len+16]; + struct map_data *data=g_new0(struct map_data,1); + + memset(filename, 0, sizeof(*filename)); + + filename[file_border_ply]="border.ply"; + filename[file_bridge_ply]="bridge.ply"; + filename[file_height_ply]="height.ply"; + filename[file_other_ply]="other.ply"; + filename[file_rail_ply]="rail.ply"; + filename[file_sea_ply]="sea.ply"; + filename[file_street_bti]="street.bti"; + filename[file_street_str]="street.str"; + filename[file_strname_stn]="strname.stn"; + filename[file_town_twn]="town.twn"; + filename[file_tunnel_ply]="tunnel.ply"; + filename[file_water_ply]="water.ply"; + filename[file_woodland_ply]="woodland.ply"; + + strcpy(file, dirname); + file[len]='/'; + for (i = 0 ; i < file_end ; i++) { + if (filename[i]) { + strcpy(file+len+1, filename[i]); + data->file[i]=file_create_caseinsensitive(file); + if (! data->file[i]) { + g_warning("Failed to load %s", file); + } + } + } + return data; +} + +struct map_data *load_maps(char *map) +{ + char *name; + void *hnd; + struct map_data *last,*ret; + int i; + + if (! map) + map=getenv("MAP_DATA"); + if (! map) + map="/opt/reiseplaner/travel/DE.map"; + + ret=load_map(map); + last=ret; + hnd=file_opendir(map); + if (hnd) { + while ((name=file_readdir(hnd))) { + if (!strcasecmp(name+strlen(name)-4,".smp")) { + char next_name[strlen(map)+strlen(name)+2]; + strcpy(next_name, map); + strcat(next_name, "/"); + strcat(next_name, name); + last->next=load_map(next_name); + last=last->next; + } + } + file_closedir(hnd); + } else { + g_warning("Unable to open Map Directory '%s'\n", map); + } + log_apply(ret, file_end); + +#if 0 + last=ret; + while (last) { + for (i = 0 ; i < file_end ; i++) { + if (last->file[i]) { + file_set_readonly(last->file[i]); + } + } + last=last->next; + } + *((int *)0)=0; +#endif + + return ret; +} + + +void +map_data_foreach(struct map_data *mdata, int file, struct transformation *t, int limit, + void(*func)(struct block_info *, unsigned char *, unsigned char *, void *), void *data) +{ + struct block_info blk_inf; + + memset(&blk_inf, 0, sizeof(blk_inf)); + + while (mdata) { + if (mdata->file[file]) { + blk_inf.mdata=mdata; + blk_inf.file=mdata->file[file]; + block_foreach_visible(&blk_inf, t, limit, data, func); + } + mdata=mdata->next; + } +} diff --git a/map_data.h b/map_data.h new file mode 100644 index 00000000..a38bd085 --- /dev/null +++ b/map_data.h @@ -0,0 +1,30 @@ + +enum file_index { + file_border_ply=0, + file_bridge_ply, + file_height_ply, + file_other_ply, + file_rail_ply, + file_sea_ply, + file_street_bti, + file_street_str, + file_strname_stn, + file_town_twn, + file_tunnel_ply, + file_water_ply, + file_woodland_ply, + file_end +}; + +struct map_data { + struct file *file[file_end]; + struct map_data *next; +}; + +struct map_data *load_maps(char *map); + +struct transformation; +struct block_info; + +void map_data_foreach(struct map_data *mdata, int file, struct transformation *t, int limit, + void(*func)(struct block_info *, unsigned char *, unsigned char *, void *), void *data); diff --git a/mapclient.c b/mapclient.c new file mode 100644 index 00000000..056510fd --- /dev/null +++ b/mapclient.c @@ -0,0 +1,103 @@ +/* + * CORBA map test + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Author: Elliot Lee <sopwith@redhat.com> + */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "map.h" + + +#define ABORT_IF_EXCEPTION(_ev, _message) \ +if ((_ev)->_major != CORBA_NO_EXCEPTION) { \ + g_error("%s: %s", _message, CORBA_exception_id (_ev)); \ + CORBA_exception_free (_ev); \ + abort(); \ +} + +Map map_client, bec; +Mappel mappel; + +gboolean map_opt_quiet = FALSE; + +int main(int argc, char *argv[]) +{ + CORBA_Environment ev; + CORBA_ORB orb; + char buf[1024]; + FILE *ior; + PointObj pnt,src,dst; + + ior=fopen("map.ior","r"); + if (ior) { + fread(buf,1024,1,ior); + fclose(ior); + } + CORBA_exception_init(&ev); + orb = CORBA_ORB_init(&argc, argv, "orbit-local-orb", &ev); + + + /* bind to object */ + map_client = CORBA_ORB_string_to_object(orb, buf, &ev); + ABORT_IF_EXCEPTION(&ev, "cannot bind to object"); + g_assert(map_client != NULL); + +#if 0 + /* Method call without any argument, usefull to tell + * lifeness */ + Map_doNothing(map_client, &ev); + ABORT_IF_EXCEPTION(&ev, "service raised exception "); + + Map_PlaceFlag(map_client, &ev); + ABORT_IF_EXCEPTION(&ev, "service raised exception "); +#endif + + if (argc > 0) { + if (!strcmp(argv[1],"--view")) { + pnt=Map_PointFromCoord(map_client, argv[2], &ev); + ABORT_IF_EXCEPTION(&ev, "service raised exception "); + Map_View(map_client, &pnt, &ev); + ABORT_IF_EXCEPTION(&ev, "service raised exception "); + } + if (!strcmp(argv[1],"--route")) { + src=Map_PointFromCoord(map_client, argv[2], &ev); + ABORT_IF_EXCEPTION(&ev, "service raised exception "); + dst=Map_PointFromCoord(map_client, argv[3], &ev); + ABORT_IF_EXCEPTION(&ev, "service raised exception "); + Map_Route(map_client, &src, &dst, &ev); + ABORT_IF_EXCEPTION(&ev, "service raised exception "); + } + mappel=Map_Get(map_client, &ev); + ABORT_IF_EXCEPTION(&ev, "service raised exception "); + } + + /* release initial object reference */ + CORBA_Object_release(map_client, &ev); + ABORT_IF_EXCEPTION(&ev, "service raised exception "); + + /* shutdown ORB, shutdown IO channels */ + CORBA_ORB_shutdown(orb, FALSE, &ev); + ABORT_IF_EXCEPTION(&ev, "ORB shutdown ..."); + + /* destroy local ORB */ + CORBA_ORB_destroy(orb, &ev); + ABORT_IF_EXCEPTION(&ev, "destroying local ORB raised exception"); + + return 0; +} @@ -0,0 +1,35 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <math.h> +#include <time.h> +#include "coord.h" +#include "data_window.h" +#include "route.h" +#include "cursor.h" +#include "menu.h" +#include "command.h" +#include "transform.h" +#include "street.h" +#include "statusbar.h" +#include "destination.h" +#include "main.h" +#include "container.h" + +void +menu_route_do_update(struct container *co) +{ + if (co->cursor) { + route_set_position(co->route, cursor_pos_get(co->cursor)); + graphics_redraw(co); + if (co->statusbar && co->statusbar->statusbar_route_update) + co->statusbar->statusbar_route_update(co->statusbar, co->route); + } +} + +void +menu_route_update(struct container *co) +{ + menu_route_do_update(co); + graphics_redraw(co); +} @@ -0,0 +1,8 @@ +struct menu { + struct menu_gui *gui; +}; + +struct container; + +void menu_route_do_update(struct container *co); +void menu_route_update(struct container *co); diff --git a/navigation.c b/navigation.c new file mode 100644 index 00000000..feb9e385 --- /dev/null +++ b/navigation.c @@ -0,0 +1,249 @@ +#include <math.h> +#include <stdlib.h> +#include "coord.h" +#include "param.h" +#include "block.h" +#include "route.h" +#include "street.h" +#include "street_name.h" +#include "speech.h" +#include "navigation.h" +#include "data_window.h" + +struct data_window *navigation_window; + +static int +road_angle(struct coord *c, int dir) +{ + double angle; + int dx=c[1].x-c[0].x; + int dy=c[1].y-c[0].y; + angle=atan2(dx,dy); + angle*=180/M_PI; + if (dir == -1) + angle=angle-180; + if (angle < 0) + angle+=360; + return angle; +} + +static void +expand_str(char *str) +{ + int len=strlen(str); + if (len > 4 && !strcmp(str+len-4,"str.")) + strcpy(str+len-4,"strasse"); + if (len > 4 && !strcmp(str+len-4,"Str.")) + strcpy(str+len-4,"Strasse"); +} + +struct navigation_item { + char name1[128]; + char name2[128]; + int length; + int time; + int crossings_start; + int crossings_end; + int angle_start; + int angle_end; + int points; + struct coord start; + struct coord end; +}; + +void +navigation_goto(struct data_window *navigation_window, char **cols) +{ + extern struct container *co; + unsigned long scale; + long x,y; + + printf("goto %s\n",cols[8]); + sscanf(cols[8],"%lx,%lx",&x,&y); + graphics_set_view(co, &x, &y, NULL); +} + +int +is_same_street(struct navigation_item *old, struct navigation_item *new) +{ + if (strlen(old->name2) && !strcmp(old->name2, new->name2)) { + strcpy(old->name1, new->name1); + return 1; + } + if (strlen(old->name1) && !strcmp(old->name1, new->name1)) { + strcpy(old->name2, new->name2); + return 1; + } + return 0; +} + +int +maneuver_required(struct navigation_item *old, struct navigation_item *new, int *delta) +{ + if (is_same_street(old, new)) + return 0; + if (old->crossings_end == 2) + return 0; + *delta=new->angle_start-old->angle_end; + if (*delta < -180) + *delta+=360; + if (*delta > 180) + *delta-=360; + if (*delta < 20 && *delta >-20) + return 0; + return 1; +} + +int flag; +extern void *speech_handle; + +void +make_maneuver(struct navigation_item *old, struct navigation_item *new) +{ + + int delta; + struct param_list param_list[20]; + + char angle_old[30],angle_new[30],angle_delta[30],cross_roads[30],position[30]; + char command[256],*p,*dir; + + param_list[0].name="Name1 Old"; + param_list[0].value=old->name1; + param_list[1].name="Name2 Old"; + param_list[1].value=old->name2; + param_list[2].name="Name1 New"; + param_list[2].value=new->name1; + param_list[3].name="Name2 New"; + param_list[3].value=new->name2; + param_list[4].name="Angle Old"; + param_list[5].name="Angle New"; + param_list[6].name="Delta"; + param_list[7].name="Cross-Roads"; + param_list[8].name="Position"; + param_list[9].name="Command"; + if (old->points) { + if (!maneuver_required(old, new, &delta)) { + old->length+=new->length; + old->time+=new->time; + old->crossings_end=new->crossings_end; + old->angle_end=new->angle_end; + old->points+=new->points; + } else { + sprintf(angle_old,"%d", old->angle_end); + param_list[4].value=angle_old; + sprintf(angle_new,"%d", new->angle_start); + param_list[5].value=angle_new; + sprintf(angle_delta,"%d", delta); + param_list[6].value=angle_delta; + sprintf(cross_roads,"%d", old->crossings_end); + param_list[7].value=cross_roads; + sprintf(position,"0x%lx,0x%lx", new->start.x, new->start.y); + param_list[8].value=position; + sprintf(command,"Dem Strassenverlauf %d Meter folgen, dann ", old->length); + p=command+strlen(command); + dir="rechts"; + if (delta < 0) { + dir="links"; + delta=-delta; + } + if (delta < 45) { + strcpy(p,"leicht "); + } else if (delta < 105) { + } else if (delta < 165) { + strcpy(p,"scharf "); + } + p+=strlen(p); + strcpy(p,dir); + p+=strlen(p); + strcpy(p," abbiegen"); + param_list[9].value=command; + if (flag) { + printf("command='%s'\n", command); +#if 0 + speech_say(speech_handle, command); +#endif + flag=0; + } + data_window_add(navigation_window, param_list, 10); + *old=*new; + } + } else { + *old=*new; + } +} + +void +navigation_path_description(void *route) +{ + int id; + struct route_path_segment *curr=route_path_get_all(route); + struct block_info blk_inf; + struct street_str *str; + struct street_name name; + struct street_coord *coord; + struct map_data *mdata=route_mapdata_get(route); + struct coord *start,*end,*tmp; + int angle_start, angle_end, angle_tmp; + struct route_crossings *crossings_start,*crossings_end; + struct navigation_item item_curr,item_last; + + memset(&item_last,0,sizeof(item_last)); + + if (!navigation_window) + navigation_window=data_window("Navigation",NULL,navigation_goto); + data_window_begin(navigation_window); + flag=1; + while (curr) { + str=NULL; + id=curr->segid; + if (id) { + if (id < 0) + id=-id; + street_get_by_id(mdata, id, &blk_inf, &str); + coord=street_coord_get(&blk_inf, str); + start=coord->c; + end=coord->c+coord->count-1; + angle_start=road_angle(coord->c, curr->dir); + if (coord->count > 2) + angle_end=road_angle(coord->c+coord->count-2,curr->dir); + else + angle_end=angle_start; + if (curr->dir < 0) { + tmp=start; + angle_tmp=angle_start; + start=end; + angle_start=angle_end; + end=tmp; + angle_end=angle_tmp; + } + crossings_start=route_crossings_get(route, start); + crossings_end=route_crossings_get(route, end); + if (str && str->nameid) { + street_name_get_by_id(&name, blk_inf.mdata, str->nameid); + strcpy(item_curr.name1,name.name1); + strcpy(item_curr.name2,name.name2); + expand_str(item_curr.name1); + expand_str(item_curr.name2); + } else { + item_curr.name1[0]='\0'; + item_curr.name2[0]='\0'; + } + item_curr.length=curr->length; + item_curr.time=curr->time; + item_curr.crossings_start=crossings_start->count; + item_curr.crossings_end=crossings_end->count; + item_curr.angle_start=angle_start; + item_curr.angle_end=angle_end; + item_curr.points=coord->count; + item_curr.start=*start; + item_curr.end=*end; + make_maneuver(&item_last,&item_curr); + free(coord); + free(crossings_start); + free(crossings_end); + } + curr=curr->next; + } + data_window_end(navigation_window); +} + diff --git a/navigation.h b/navigation.h new file mode 100644 index 00000000..ae39528f --- /dev/null +++ b/navigation.h @@ -0,0 +1 @@ +void navigation_path_description(void *route); @@ -0,0 +1 @@ + 2 § Binary files differdiff --git a/param.c b/param.c new file mode 100644 index 00000000..0b3296e3 --- /dev/null +++ b/param.c @@ -0,0 +1,46 @@ +#include <stdio.h> +#include <string.h> +#include <malloc.h> +#include "param.h" + +void +param_add_string(char *name, char *value, struct param_list **param, int *count) +{ + if (*count > 0) { + (*param)->name=malloc(strlen(value)+strlen(name)+2); + (*param)->value=(*param)->name+strlen(name)+1; + strcpy((*param)->name, name); + strcpy((*param)->value, value); + (*count)--; + (*param)++; + } + +} + +void +param_add_dec(char *name, unsigned long value, struct param_list **param, int *count) +{ + char buffer[1024]; + sprintf(buffer, "%ld", value); + param_add_string(name, buffer, param, count); +} + + +void +param_add_hex(char *name, unsigned long value, struct param_list **param, int *count) +{ + char buffer[1024]; + sprintf(buffer, "0x%lx", value); + param_add_string(name, buffer, param, count); +} + +void +param_add_hex_sig(char *name, long value, struct param_list **param, int *count) +{ + char buffer[1024]; + if (value < 0) + sprintf(buffer, "-0x%lx", -value); + else + sprintf(buffer, "0x%lx", value); + param_add_string(name, buffer, param, count); +} diff --git a/param.h b/param.h new file mode 100644 index 00000000..496c0542 --- /dev/null +++ b/param.h @@ -0,0 +1,9 @@ +struct param_list { + char *name; + char *value; +}; + +void param_add_string(char *name, char *value, struct param_list **param, int *count); +void param_add_dec(char *name, unsigned long value, struct param_list **param, int *count); +void param_add_hex(char *name, unsigned long value, struct param_list **param, int *count); +void param_add_hex_sig(char *name, long value, struct param_list **param, int *count); diff --git a/phrase.c b/phrase.c new file mode 100644 index 00000000..92f6e7c3 --- /dev/null +++ b/phrase.c @@ -0,0 +1,25 @@ +#include <time.h> +#include "coord.h" +#include "route.h" +#include "speech.h" + +void +phrase_route_calc(void *speech) +{ + if (! speech) + return; + speech_say(speech,"Die Route wird berechnet\n"); +} + +void +phrase_route_calculated(void *speech, void *route) +{ + struct tm *eta; + if (! speech) + return; + + eta=route_get_eta(route); + + speech_sayf(speech,"Die Route wurde berechnet. Geschätzte Ankunftszeit %d Uhr %d Entfernung %4.0f Kilometer", eta->tm_hour,eta->tm_min,route_get_len(route)/1000); + +} diff --git a/phrase.h b/phrase.h new file mode 100644 index 00000000..9f357388 --- /dev/null +++ b/phrase.h @@ -0,0 +1,2 @@ +void phrase_route_calc(void *speech); +void phrase_route_calculated(void *speech, void *route); diff --git a/plugin.c b/plugin.c new file mode 100644 index 00000000..d5c182b5 --- /dev/null +++ b/plugin.c @@ -0,0 +1,21 @@ +#include <stdio.h> +#include <dlfcn.h> +#include "plugin.h" +#define PLUGIN_C +#include "plugin.h" + +void +plugin_load(void) +{ + char *plugin="plugins/poi_geodownload/plugin_poi_geodownload.so"; + void *h=dlopen(plugin,RTLD_LAZY); + void (*init)(void); + + if (! h) + printf("can't load '%s', Error '%s'\n", plugin, dlerror()); + else { + init=dlsym(h,"plugin_init"); + (*init)(); + } + +} diff --git a/plugin.h b/plugin.h new file mode 100644 index 00000000..84e0845d --- /dev/null +++ b/plugin.h @@ -0,0 +1,56 @@ +void plugin_load(void); +int plugin_init(void); + +struct container; +struct popup; +struct popup_item; +#undef PLUGIN_FUNC1 +#undef PLUGIN_FUNC3 +#undef PLUGIN_FUNC4 +#define PLUGIN_PROTO(name,args...) void name(args) + +#ifdef PLUGIN_C +#define PLUGIN_REGISTER(name,args...) \ +void \ +plugin_register_##name(PLUGIN_PROTO((*func),args)) \ +{ \ + plugin_##name##_func=func; \ +} + +#define PLUGIN_CALL(name,args...) \ +{ \ + if (plugin_##name##_func) \ + (*plugin_##name##_func)(args); \ +} + +#define PLUGIN_FUNC1(name,t1,p1) \ +PLUGIN_PROTO((*plugin_##name##_func),t1 p1); \ +void plugin_call_##name(t1 p1) PLUGIN_CALL(name,p1) \ +PLUGIN_REGISTER(name,t1 p1) + +#define PLUGIN_FUNC3(name,t1,p1,t2,p2,t3,p3) \ +PLUGIN_PROTO((*plugin_##name##_func),t1 p1,t2 p2,t3 p3); \ +void plugin_call_##name(t1 p1,t2 p2, t3 p3) PLUGIN_CALL(name,p1,p2,p3) \ +PLUGIN_REGISTER(name,t1 p1,t2 p2,t3 p3) + +#define PLUGIN_FUNC4(name,t1,p1,t2,p2,t3,p3,t4,p4) \ +PLUGIN_PROTO((*plugin_##name##_func),t1 p1,t2 p2,t3 p3,t4 p4); \ +void plugin_call_##name(t1 p1,t2 p2, t3 p3, t4 p4) PLUGIN_CALL(name,p1,p2,p3,p4) \ +PLUGIN_REGISTER(name,t1 p1,t2 p2,t3 p3,t4 p4) + +#else +#define PLUGIN_FUNC1(name,t1,p1) \ +void plugin_register_##name(void(*func)(t1 p1)); \ +void plugin_call_##name(t1 p1); + +#define PLUGIN_FUNC3(name,t1,p1,t2,p2,t3,p3) \ +void plugin_register_##name(void(*func)(t1 p1,t2 p2,t3 p3)); \ +void plugin_call_##name(t1 p1,t2 p2,t3 p3); + +#define PLUGIN_FUNC4(name,t1,p1,t2,p2,t3,p3,t4,p4) \ +void plugin_register_##name(void(*func)(t1 p1,t2 p2,t3 p3,t4 p4)); \ +void plugin_call_##name(t1 p1,t2 p2,t3 p3,t4 p4); +#endif + +PLUGIN_FUNC1(draw, struct container *, co) +PLUGIN_FUNC3(popup, struct container *, map, struct popup *, p, struct popup_item **, list) diff --git a/point.h b/point.h new file mode 100644 index 00000000..6672f3d5 --- /dev/null +++ b/point.h @@ -0,0 +1,9 @@ +#ifndef POINT_H +#define POINT_H + +struct point { + int x; + int y; +}; + +#endif @@ -0,0 +1,109 @@ +#include <stdlib.h> +#include <assert.h> +#include "coord.h" +#include "map_data.h" +#include "file.h" +#include "block.h" +#include "poly.h" +#include "display.h" +#include "draw_info.h" +#include "data_window.h" +#include "container.h" + +extern struct data_window poly_window; + +int +poly_get_hdr(unsigned char **p,struct poly_hdr *poly_hdr) +{ + poly_hdr->addr=*p; + poly_hdr->c=(struct coord *) (*p); + *p+=3*sizeof(struct coord); + poly_hdr->name=*p; + while (**p) { + (*p)++; + } + (*p)++; + poly_hdr->order=*(*p)++; + poly_hdr->type=*(*p)++; + poly_hdr->polys=*(unsigned long *)(*p); (*p)+=sizeof(unsigned long); + poly_hdr->count=(unsigned long *)(*p); (*p)+=poly_hdr->polys*sizeof(unsigned long); + poly_hdr->count_sum=*(unsigned long *)(*p); (*p)+=sizeof(unsigned long); + return 0; +} + +void +poly_draw_segment(struct container *co, struct segment *seg, int disp, unsigned char **p, int limit) +{ + struct poly_hdr poly_hdr; + struct coord *coord; + unsigned int j,k,o; + struct point pnt; + struct param_list param[100]; + int max=20000; + struct point xpoints[max]; + + seg->data[0]=*p; + poly_get_hdr(p, &poly_hdr); + if (poly_hdr.order < limit && is_visible(co->trans, poly_hdr.c)) { + transform(co->trans,&poly_hdr.c[2],&pnt); + for (k = 0 ; k < poly_hdr.polys ; k++) { + assert(poly_hdr.count[k] < max); + for (j = 0 ; j < poly_hdr.count[k] ; j++) { + transform(co->trans, coord_get(p), &xpoints[j]); + } + if (poly_hdr.type < 0x80) { + o=0; + if (poly_hdr.type == 0x1e) + o=1; + else if (poly_hdr.type == 0x2d) + o=2; + else if (poly_hdr.type == 0x32) + o=3; + display_add(&co->disp[disp+o], 0, 0, poly_hdr.name, poly_hdr.count[k], xpoints, NULL, seg, sizeof(*seg)); + + } else { + display_add(&co->disp[disp], 1, 0, poly_hdr.name, poly_hdr.count[k], xpoints, NULL, seg, sizeof(*seg)); + } + if (co->data_window[data_window_type_poly]) + data_window_add(co->data_window[data_window_type_poly], param, poly_get_param(seg, param, 100)); + } + } else + (*p)+=poly_hdr.count_sum*sizeof(*coord); +} + +void +poly_draw_block(struct block_info *blk_inf, unsigned char *p, unsigned char *end, void *data) +{ + struct draw_info *drw_inf=data; + struct segment seg; + int i; + + seg.blk_inf=*blk_inf; + + for (i = 0 ; i < blk_inf->block->count ; i++) + poly_draw_segment(drw_inf->co, &seg, drw_inf->display, &p, drw_inf->limit); +} + + +int +poly_get_param(struct segment *seg, struct param_list *param, int count) +{ + int i=count; + unsigned char *p=seg->data[0]; + struct poly_hdr poly_hdr; + + + param_add_hex("Addr", p-seg->blk_inf.file->begin, ¶m, &count); + poly_get_hdr(&p, &poly_hdr); + param_add_string("Name", poly_hdr.name, ¶m, &count); + param_add_hex("L", poly_hdr.c[0].x, ¶m, &count); + param_add_hex("T", poly_hdr.c[0].y, ¶m, &count); + param_add_hex("R", poly_hdr.c[1].x, ¶m, &count); + param_add_hex("B", poly_hdr.c[1].y, ¶m, &count); + param_add_hex("X", poly_hdr.c[2].x, ¶m, &count); + param_add_hex("Y", poly_hdr.c[2].y, ¶m, &count); + param_add_hex("Order", poly_hdr.order, ¶m, &count); + param_add_hex("Type", poly_hdr.type, ¶m, &count); + param_add_hex("Polys", poly_hdr.polys, ¶m, &count); + return i-count; +} @@ -0,0 +1,13 @@ +struct poly_hdr { + unsigned char *addr; + struct coord *c; + char *name; + unsigned char order; + unsigned char type; + unsigned long polys; + unsigned long *count; + unsigned long count_sum; +}; + +void poly_draw_block(struct block_info *blk_inf, unsigned char *p, unsigned char *end, void *data); +int poly_get_param(struct segment *seg, struct param_list *param, int count); diff --git a/popup.c b/popup.c new file mode 100644 index 00000000..f0fc5883 --- /dev/null +++ b/popup.c @@ -0,0 +1,306 @@ +#include <malloc.h> +#include <string.h> +#include <stdio.h> +#include <assert.h> +#include <gtk/gtk.h> +#include "coord.h" +#include "param.h" +#include "map_data.h" +#include "block.h" +#include "display.h" +#include "town.h" +#include "street.h" +#include "poly.h" +#include "log.h" +#include "popup.h" +#include "plugin.h" +#include "vehicle.h" +#include "route.h" +#include "cursor.h" +#include "statusbar.h" +#include "container.h" + +void +popup_item_destroy_text(struct popup_item *item) +{ + g_free(item->text); + g_free(item); +} + +struct popup_item * +popup_item_new_text(struct popup_item **last, char *text, int priority) +{ + struct popup_item *curr; + curr=g_new(struct popup_item,1); + memset(curr, 0, sizeof(*curr)); + curr->text=g_strdup(text); + curr->priority=priority; + curr->destroy=popup_item_destroy_text; + if (last) { + curr->next=*last; + *last=curr; + } + return curr; +} + +struct popup_item * +popup_item_new_func(struct popup_item **last, char *text, int priority, void (*func)(struct popup_item *, void *), void *param) +{ + struct popup_item *curr=popup_item_new_text(last, text, priority); + curr->func=func; + curr->param=param; + return curr; +} + +struct popup_item * +param_to_menu_new(char *name,struct param_list *plist, int c, int iso) +{ + struct popup_item *last, *curr, *ret; + int i; + + ret=popup_item_new_text(NULL,name,1); + last=NULL; + for (i = 0 ; i < c ; i++) { + char name_buffer[strlen(plist[i].name)+strlen(plist[i].value)+2]; + char *text=name_buffer; + + sprintf(name_buffer,"%s:%s", plist[i].name, plist[i].value); + if (iso) { + text=g_convert(name_buffer,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + if (! text) { + printf("problem converting '%s'\n", name_buffer); + } + } + curr=popup_item_new_text(&last, text, i); + if (iso) + free(text); + } + ret->submenu=last; + return ret; +} + +void +popup_set_no_passing(struct popup_item *item, void *param) +{ + struct display_list *l=param; + struct segment *seg=(struct segment *)(l->data); + struct street_str *str=(struct street_str *)(seg->data[0]); + char log[256]; + int segid=str->segid; + if (segid < 0) + segid=-segid; + + sprintf(log,"Attributes Street 0x%x updated: limit=0x%x(0x%x)", segid, 0x33, str->limit); + str->limit=0x33; + log_write(log, seg->blk_inf.file, str, sizeof(*str)); +} + +void +popup_set_destination(struct popup_item *item, void *param) +{ + struct popup_item *ref=param; + struct popup *popup=ref->param; + struct container *co=popup->co; + printf("Destination %s\n", ref->text); + route_set_position(co->route, cursor_pos_get(co->cursor)); + route_set_destination(co->route, &popup->c); + graphics_redraw(popup->co); + if (co->statusbar && co->statusbar->statusbar_route_update) + co->statusbar->statusbar_route_update(co->statusbar, co->route); +} + +extern void *vehicle; + +void +popup_set_position(struct popup_item *item, void *param) +{ + struct popup_item *ref=param; + struct popup *popup=ref->param; + printf("Position %s\n", ref->text); + vehicle_set_position(popup->co->vehicle, &popup->c); +} + +void +popup_break_crossing(struct display_list *l) +{ + struct segment *seg=(struct segment *)(l->data); + struct street_str *str=(struct street_str *)(seg->data[0]); + char log[256]; + int segid=str->segid; + if (segid < 0) + segid=-segid; + + sprintf(log,"Coordinates Street 0x%x updated: limit=0x%x(0x%x)", segid, 0x33, str->limit); + str->limit=0x33; + log_write(log, seg->blk_inf.file, str, sizeof(*str)); +} + +void +popup_call_func(GtkObject *obj, void *parm) +{ + struct popup_item *curr=parm; + curr->func(curr, curr->param); +} + +GtkWidget * +popup_menu(struct popup_item *list) +{ + int min_prio,curr_prio; + struct popup_item *curr; + GtkWidget *item,*menu,*submenu; + + curr_prio=0; + menu=gtk_menu_new(); + do { + min_prio=INT_MAX; + curr=list; + while (curr) { + if (curr->priority == curr_prio) { + item=gtk_menu_item_new_with_label(curr->text); + gtk_menu_append(GTK_MENU(menu), item); + if (curr->submenu) { + submenu=popup_menu(curr->submenu); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu); + } else if (curr->func) { + gtk_signal_connect(GTK_OBJECT(item), "activate", + GTK_SIGNAL_FUNC (popup_call_func), curr); + } + } + if (curr->priority > curr_prio && curr->priority < min_prio) + min_prio=curr->priority; + curr=curr->next; + } + curr_prio=min_prio; + } while (min_prio != INT_MAX); + return menu; +} + +void +popup_display_list_default(struct display_list *d, struct popup_item **popup_list) +{ + struct segment *seg; + char *desc,*text,*item_text; + struct popup_item *curr_item,*submenu; + struct param_list plist[100]; + + desc=NULL; + if (d->type == 0) desc="Polygon"; + if (d->type == 1) desc="Polyline"; + if (d->type == 2) desc="Street"; + if (d->type == 3) desc="Label"; + if (d->type == 4) desc="Point"; + seg=(struct segment *)(d->data); + if (seg) { + if (d->label && strlen(d->label)) { + item_text=malloc(strlen(desc)+strlen(d->label)+2); + strcpy(item_text, desc); + strcat(item_text," "); + strcat(item_text, d->label); + } else { + item_text=desc; + } + text=g_convert(item_text,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + curr_item=popup_item_new_text(popup_list,text,1); + g_free(text); + + curr_item->submenu=param_to_menu_new("File", plist, file_get_param(seg->blk_inf.file, plist, 100), 1); + submenu=curr_item->submenu; + submenu->next=param_to_menu_new("Block", plist, block_get_param(&seg->blk_inf, plist, 100), 1); + submenu=submenu->next; + + if (d->type == 0 || d->type == 1) { + submenu->next=param_to_menu_new(desc, plist, poly_get_param(seg, plist, 100), 1); + } + if (d->type == 2) { + submenu->next=param_to_menu_new(desc, plist, street_get_param(seg, plist, 100, 1), 1); + popup_item_new_func(&submenu->next,"Set no passing", 1000, popup_set_no_passing, d); + } + if (d->type == 3) { + submenu->next=param_to_menu_new(desc, plist, town_get_param(seg, plist, 100), 1); + } + if (d->type == 4) { + submenu->next=param_to_menu_new(desc, plist, street_bti_get_param(seg, plist, 100), 1); + } + } +} + +void +popup_display_list(struct container *co, struct popup *popup, struct popup_item **popup_list) +{ + GtkWidget *menu, *item; + struct display_list *list[100],**p=list; + + menu=gtk_menu_new(); + item=gtk_menu_item_new_with_label("Selection"); + gtk_menu_append (GTK_MENU(menu), item); + display_find(&popup->pnt, co->disp, display_end, 3, list, 100); + while (*p) { + if (! (*p)->info) + popup_display_list_default(*p, popup_list); + else + (*(*p)->info)(*p, popup_list); + p++; + } +} + +void +popup_destroy_items(struct popup_item *item) +{ + struct popup_item *next; + while (item) { + if (item->active && item->func) + item->func(item, item->param); + if (item->submenu) + popup_destroy_items(item->submenu); + next=item->next; + assert(item->destroy != NULL); + item->destroy(item); + item=next; + } +} + +void +popup_destroy(GtkObject *obj, void *parm) +{ + struct popup *popup=parm; + + popup_destroy_items(popup->items); + g_free(popup); +} + +void +popup(struct container *co, int x, int y, int button) +{ + GtkWidget *menu; + struct popup *popup=g_new(struct popup,1); + struct popup_item *list=NULL; + struct popup_item *descr; + struct coord_geo g; + char buffer[256]; + + popup->co=co; + popup->pnt.x=x; + popup->pnt.y=y; + transform_reverse(co->trans, &popup->pnt, &popup->c); + popup_display_list(co, popup, &list); + plugin_call_popup(co, popup, &list); + transform_lng_lat(&popup->c, &g); + strcpy(buffer,"Map Point "); + transform_geo_text(&g, buffer+strlen(buffer)); + descr=popup_item_new_text(&list,buffer, 0); + descr->param=popup; + + popup_item_new_func(&list,"Set as Position", 1000, popup_set_position, descr); + popup_item_new_func(&list,"Set as Destination", 1001, popup_set_destination, descr); + + popup->items=list; + menu=popup_menu(list); + gtk_widget_show_all(menu); + popup->gui_data=menu; + + + gtk_menu_popup (GTK_MENU(menu), NULL, NULL, NULL, NULL, button, gtk_get_current_event_time()); + gtk_signal_connect(GTK_OBJECT(menu), "selection-done", GTK_SIGNAL_FUNC (popup_destroy), popup); +} + + diff --git a/popup.h b/popup.h new file mode 100644 index 00000000..989d5155 --- /dev/null +++ b/popup.h @@ -0,0 +1,22 @@ +void popup(struct container *co, int x, int y, int button); +struct popup_item *popup_item_new_text(struct popup_item **last, char *text, int priority); + +struct popup { + struct container *co; + struct point pnt; + struct coord c; + void *gui_data; + struct popup_item *items; + struct popup_item *active; +}; + +struct popup_item { + char *text; + int priority; + void (*func)(struct popup_item *, void *); + void *param; + struct popup_item *submenu; + struct popup_item *next; + void (*destroy)(struct popup_item *); + int active; +}; diff --git a/profile.c b/profile.c new file mode 100644 index 00000000..35a41447 --- /dev/null +++ b/profile.c @@ -0,0 +1,18 @@ +#include <stdlib.h> +#include <sys/time.h> + +void +profile_timer(char *where) +{ + static struct timeval last; + struct timeval curr; + int msec; + + if (where) { + gettimeofday(&curr, NULL); + msec=(curr.tv_usec-last.tv_usec)/1000+ + (curr.tv_sec-last.tv_sec)*1000; + printf("%s:%d msec\n", where, msec); + } + gettimeofday(&last, NULL); +} diff --git a/route.c b/route.c new file mode 100644 index 00000000..75de703a --- /dev/null +++ b/route.c @@ -0,0 +1,1053 @@ +#include <stdio.h> +#include <math.h> +#include <assert.h> +#include <unistd.h> +#include <sys/time.h> +#include <glib.h> +#include "coord.h" +#include "param.h" +#include "map_data.h" +#include "block.h" +#include "street.h" +#include "street_data.h" +#include "display.h" +#include "transform.h" +#include "route.h" +#include "phrase.h" +#include "navigation.h" +#include "fib-1.0/fib.h" +#include "time.h" + +/* Node1: 4 */ +/* Node2: 4 */ +/* Segid: 4 */ +/* len: 4 */ +/* type: 1 */ +/* limit/order: 1 */ +/* 18 Bytes */ + +extern void *speech_handle; +static int speed_list[16]={120,120,80,110,90,80,60,90,80,70,60,50,30,10,0,60}; + +int debug_route=0; + +#define GC_TEXT_FG 7 +#define GC_TEXT_BG 8 +#define GC_BLACK 9 +#define GC_RED 21 + +int hx=0x1416bc; /* 447C9E dx=3E18, dxmg=5E09*/ +int hy=0x5f224c; /* 5282B5 dy=5E07, dymg=8F1C*/ +int segid_h=0x20461961; + +int hkx=0x1474c5; /* 44BAB6 */ +int hky=0x5fb168; /* 52E0BC */ + +int lx=0x141ac3; +int ly=0x5f2d7a; + +int trace; +/* 0x141b53, 0x5f2065 */ + +struct coord3d { + struct coord xy; + int h; +}; + + +struct route_point { + struct route_point *next; + struct route_point *hash_next; + struct route_segment *start; + struct route_segment *end; + struct route_segment *seg; +#if 0 + int conn; + int id; +#endif + struct fibheap_el *el; + int value; + struct coord3d c; +}; + + +struct route_segment { + struct route_segment *next; + struct route_segment *start_next; + struct route_segment *end_next; + struct route_point *start; + struct route_point *end; + struct street_str *str; + int limit; + int len; + int offset; +}; + +struct street_info { + struct street_header *hdr; + struct street_type *typ; + struct street_str *str; + unsigned char *p; + int bytes; + int include; +}; + +struct route_info { + int mode; + struct coord3d seg1,seg2,line1,line2,pos,click; + int seg1_len,seg2_len; + int offset; + int dist; + struct block_info blk_inf; + struct street_info str_inf; +}; + +struct route { + struct map_data *map_data; + double route_time_val; + double route_len_val; + struct route_path_segment *path; + struct route_path_segment *path_last; + struct route_info *pos; + struct route_info *dst; + struct route_segment *route_segments; + struct route_point *route_points; + struct block_list *blk_lst; +#define HASH_SIZE 8192 + struct route_point *hash[HASH_SIZE]; +}; + +struct route * +route_new(void) +{ + struct route *this=g_new0(struct route, 1); + return this; +} + +void +route_path_free(struct route *this) +{ + struct route_path_segment *curr, *next; + curr=this->path; + + while (curr) { + next=curr->next; + g_free(curr); + curr=next; + } + this->path=NULL; + this->path_last=NULL; +} + +void +route_mapdata_set(struct route *this, struct map_data *mdata) +{ + this->map_data=mdata; +} + +struct map_data * +route_mapdata_get(struct route *this) +{ + return this->map_data; +} + +static void +route_add_path_segment(struct route *this, int segid, int offset, struct coord *start, struct coord *end, int dir, int len, int time) +{ + struct route_path_segment *segment=g_new0(struct route_path_segment,1); + segment->next=NULL; + segment->segid=segid; + segment->offset=offset; + segment->dir=dir; + segment->length=len; + segment->time=time; + if (start) + segment->c[0]=*start; + if (end) + segment->c[1]=*end; + if (!this->path) + this->path=segment; + if (this->path_last) + this->path_last->next=segment; + this->path_last=segment; +} + +void +route_set_position(struct route *this, struct coord *pos) +{ + struct route_info *rt; + + route_path_free(this); + rt=route_find_nearest_street(this->map_data, pos); + route_find_point_on_street(rt); + if (this->pos) + g_free(this->pos); + this->pos=rt; + if (this->dst) { + route_find(this, this->pos, this->dst); + } +} + +struct route_path_segment * +route_path_get_all(struct route *this) +{ + return this->path; +} + +struct route_path_segment * +route_path_get(struct route *this, int segid) +{ + struct route_path_segment *curr=this->path; + + while (curr) { + if (curr->segid == segid) + return curr; + curr=curr->next; + } + return NULL; + +} + +void +route_set_destination(struct route *this, struct coord *dest) +{ + struct route_info *rt; + + rt=route_find_nearest_street(this->map_data, dest); + route_find_point_on_street(rt); + if (this->dst) + g_free(this->dst); + this->dst=rt; + route_do_start(this, this->pos, this->dst); +} + +struct coord * +route_get_destination(struct route *this) +{ + if (! this->dst) + return NULL; + return &this->dst->click.xy; +} + +void +route_street_foreach(struct block_info *blk_inf, unsigned char *p, unsigned char *end, void *data, + void(*func)(struct block_info *, struct street_info *, unsigned char **, unsigned char *, void *)) +{ + struct street_info str_inf; + struct street_str *str,*str_tmp; + + if (blk_inf->block_number == 0x10c6) { + printf("route_street_foreach p=%p\n", p); + } + str_inf.hdr=(struct street_header *)p; + p+=sizeof(struct street_header); + assert(str_inf.hdr->count == blk_inf->block->count); + + str_inf.bytes=street_get_bytes(blk_inf->block); + + str_inf.typ=(struct street_type *)p; + p+=blk_inf->block->count*sizeof(struct street_type); + + str=(struct street_str *)p; + str_tmp=str; + while (str_tmp->segid) + str_tmp++; + + p=(unsigned char *)str_tmp; + p+=4; + + while (str->segid) { + str_inf.include=(str[1].segid > 0); + str_inf.str=str; + str_inf.p=p; + func(blk_inf, &str_inf, &p, end-4, data); + if (str_inf.include) + str_inf.typ++; + str++; + } +} + + +static struct route_point * +route_get_point(struct route *this, struct coord3d *c) +{ + struct route_point *p=this->route_points; + int hashval=(c->xy.x + c->xy.y + c->h) & (HASH_SIZE-1); + p=this->hash[hashval]; + while (p) { + if (p->c.xy.x == c->xy.x && p->c.xy.y == c->xy.y && p->c.h == c->h) + return p; + p=p->hash_next; + } + return NULL; +} + + +struct route_point * +route_point_add(struct route *this, struct coord3d *f, int conn) +{ + int hashval; + struct route_point *p; + + p=route_get_point(this,f); + if (p) { +#if 0 + p->conn+=conn; +#endif + } else { + hashval=(f->xy.x + f->xy.y + f->h) & (HASH_SIZE-1); + if (debug_route) + printf("p (0x%lx,0x%lx,0x%x)\n", f->xy.x, f->xy.y, f->h); + p=g_new(struct route_point,1); + p->hash_next=this->hash[hashval]; + this->hash[hashval]=p; + p->next=this->route_points; +#if 0 + p->conn=conn; + p->id=++id; +#endif + p->el=NULL; + p->start=NULL; + p->end=NULL; + p->seg=NULL; + p->value=INT_MAX; + p->c=*f; + this->route_points=p; + } + return p; +} + +static void +route_points_free(struct route *this) +{ + struct route_point *curr,*next; + curr=this->route_points; + while (curr) { + next=curr->next; + g_free(curr); + curr=next; + } + this->route_points=NULL; + memset(this->hash, 0, sizeof(this->hash)); +} + +void +route_segment_add(struct route *this, struct route_point *start, struct route_point *end, int len, struct street_str *str, int offset, int limit) +{ + struct route_segment *s; + s=g_new(struct route_segment,1); + s->start=start; + s->start_next=start->start; + start->start=s; + s->end=end; + s->end_next=end->end; + end->end=s; + s->len=len; + s->str=str; + s->offset=offset; + s->limit=limit; + s->next=this->route_segments; + this->route_segments=s; + if (debug_route) + printf("l (0x%lx,0x%lx0x%x)-(0x%lx,0x%lx,0x%x)\n", start->c.xy.x, start->c.xy.y, start->c.h, end->c.xy.x, end->c.xy.y, end->c.h); + +} + +void +route_segments_free(struct route *this) +{ + struct route_segment *curr,*next; + curr=this->route_segments; + while (curr) { + next=curr->next; + g_free(curr); + curr=next; + } + this->route_segments=NULL; +} + +void +route_display_points(struct route *this, struct container *co) +{ +#if 0 + GtkMap *map=co->map; + struct route_point *p=this->route_points; + int r=5; + struct point pnt; + char text[256]; + + while (p) { + if (transform(co->trans, &p->c.xy, &pnt)) { + gdk_draw_arc(GTK_WIDGET(map)->window, map->gc[GC_BLACK], FALSE, pnt.x-r/2, pnt.y-r/2, r, r, 0, 64*360); + if (p->value != -1) { + sprintf(text,"%d", p->value); +#if 0 + display_text(GTK_WIDGET(map)->window, map->gc[GC_TEXT_FG], map->gc[GC_TEXT_BG], map->face[0], text, pnt.x+6, pnt.y+4, 0x10000, 0); +#endif + } + } + p=p->next; + } +#endif +} + +int +route_time(int type, int len) +{ + return len*36/speed_list[type & 0x3f]; +} + +int +route_value(int type, int len) +{ + return route_time(type, len); +} + +int +route_get_height(int segid, struct coord *c) +{ + if (c->x == 0x141b53 && c->y == 0x5f2065 && (segid == 0x4fad2fa || segid == 0x4fad155)) + return 1; + if (c->x == 0x1477a7 && c->y == 0x5fac38 && (segid == 0x32adac2 || segid == 0x40725c6)) + return 1; + if (c->x == 0x147a4c && c->y == 0x5fb194 && (segid == 0x32adb17 || segid == 0x32adb16)) + return 1; + return 0; +} + +void +route_process_street_graph(struct block_info *blk_inf, struct street_info *str_inf, unsigned char **p, unsigned char *end, void *data) +{ + struct route *this=data; + int limit,flags=0; + double len=0; + struct coord3d f,o,l; + struct route_point *s_pnt,*e_pnt; + + street_get_coord(p, str_inf->bytes, blk_inf->block->c, &f.xy); + f.h=route_get_height(str_inf->str->segid, &f.xy); + s_pnt=route_point_add(this,&f, 1); + + l=f; + o=f; + while (*p < end) { + flags=street_get_coord(p, str_inf->bytes, blk_inf->block->c, &f.xy); + if (flags && !str_inf->include) + break; + len+=transform_distance(&l.xy, &o.xy); + l=o; + o=f; + if (flags) + break; + } + len+=transform_distance(&l.xy, &o.xy); + o.h=route_get_height(str_inf->str->segid, &o.xy); + e_pnt=route_point_add(this,&o, 1); + + limit=str_inf->str->limit; + if (str_inf->str->limit == 0x30 && (str_inf->str->type & 0x40)) + limit=0x03; + if (str_inf->str->limit == 0x03 && (str_inf->str->type & 0x40)) + limit=0x30; + + if (str_inf->str->limit != 0x33) + route_segment_add(this, s_pnt, e_pnt, len, str_inf->str, 0, limit); + debug_route=0; + *p-=2*str_inf->bytes; +} + +static int +compare(void *v1, void *v2) +{ + struct route_point *p1=v1; + struct route_point *p2=v2; + return p1->value-p2->value; +} + +static void +route_flood(struct route *this, struct route_info *rt_end) +{ + struct route_point *end; + struct route_point *p_min; + struct route_segment *s; + int min,new,old,val; + struct fibheap *heap; + + heap = fh_makeheap(); + + fh_setcmp(heap, compare); + + end=route_get_point(this, &rt_end->pos); + assert(end != 0); + end->value=0; + end->el=fh_insert(heap, end); + for (;;) { + p_min=fh_extractmin(heap); + if (! p_min) + break; + min=p_min->value; + if (debug_route) + printf("min=%d, 0x%lx, 0x%lx\n", min, p_min->c.xy.x, p_min->c.xy.y); + s=p_min->start; + while (s) { + val=route_value(s->str->type, s->len); +#if 0 + val+=val*2*street_route_contained(s->str->segid); +#endif + new=min+val; + if (debug_route) + printf("begin %d (0x%lx,0x%lx) ",new,s->end->c.xy.x, s->end->c.xy.y); + if (new < s->end->value && !(s->limit & 0x30)) { + s->end->value=new; + s->end->seg=s; + if (! s->end->el) { + if (debug_route) + printf("insert"); + s->end->el=fh_insert(heap, s->end); + } + else { + if (debug_route) + printf("replace"); + fh_replacedata(heap, s->end->el, s->end); + } + } + if (debug_route) + printf("\n"); + s=s->start_next; + } + s=p_min->end; + while (s) { + new=min+route_value(s->str->type, s->len); + if (debug_route) + printf("end %d vs %d (0x%lx,0x%lx) ",new,s->start->value,s->start->c.xy.x, s->start->c.xy.y); + if (new < s->start->value && !(s->limit & 0x03)) { + old=s->start->value; + s->start->value=new; + s->start->seg=s; + if (! s->start->el) { + if (debug_route) + printf("insert"); + s->start->el=fh_insert(heap, s->start); + } + else { + if (debug_route) + printf("replace"); + fh_replacedata(heap, s->start->el, s->start); + } + } + if (debug_route) + printf("\n"); + s=s->end_next; + } + } +} + +int +route_find(struct route *this, struct route_info *rt_start, struct route_info *rt_end) +{ + struct route_point *start,*start1,*start2; + struct route_segment *s=NULL; + double len=0,slen; + int ret,hr,min,time=0,seg_time,dir,type; + unsigned int val1=0xffffffff,val2=0xffffffff; + + start1=route_get_point(this, &rt_start->seg1); + start2=route_get_point(this, &rt_start->seg2); + assert(start1 != 0); + assert(start2 != 0); + if (start1->value != -1) + val1=start1->value+route_value(rt_start->str_inf.str->type, rt_start->seg1_len); + if (start2->value != -1) + val2=start2->value+route_value(rt_start->str_inf.str->type, rt_start->seg2_len); + + route_add_path_segment(this, 0, 0, &rt_start->click.xy, &rt_start->pos.xy, 1, 0, 0); + type=rt_start->str_inf.str->type; + if (val1 < val2) { + ret=1; + start=start1; + slen=transform_distance(&rt_start->pos.xy, &rt_start->line1.xy); + route_add_path_segment(this, 0, 0, &rt_start->pos.xy, &rt_start->line1.xy, 1, slen, route_time(type, slen)); + route_add_path_segment(this, rt_start->str_inf.str->segid, rt_start->offset, NULL, NULL, -1, rt_start->seg1_len, route_time(type, rt_start->seg1_len)); + } + else { + ret=2; + start=start2; + slen=transform_distance(&rt_start->pos.xy, &rt_start->line2.xy); + route_add_path_segment(this, 0, 0, &rt_start->pos.xy, &rt_start->line2.xy, 1, slen, route_time(type, slen)); + route_add_path_segment(this, rt_start->str_inf.str->segid, -rt_start->offset, NULL, NULL, 1, rt_start->seg2_len, route_time(type, rt_start->seg2_len)); + } + + while (start->value) { + s=start->seg; + if (! s) { + printf("No Route found\n"); + break; + } + if (s->start == start) { + start=s->end; + dir=1; + } + else { + start=s->start; + dir=-1; + } + len+=s->len; + seg_time=route_time(s->str->type, s->len); + time+=seg_time; + route_add_path_segment(this, s->str->segid, s->offset, NULL, NULL, dir, s->len, seg_time); + } + if (s) { + if (s->start->c.xy.x == rt_end->seg1.xy.x && s->start->c.xy.y == rt_end->seg1.xy.y) + route_add_path_segment(this, 0, 0, &rt_end->pos.xy, &rt_end->line1.xy, -1, 0, 0); + else + route_add_path_segment(this, 0, 0, &rt_end->pos.xy, &rt_end->line2.xy, -1, 0, 0); + route_add_path_segment(this, 0, 0, &rt_end->click.xy, &rt_end->pos.xy, -1, 0, 0); + printf("len %5.3f\n", len/1000); + this->route_time_val=time/10; + time/=10; + this->route_len_val=len; + min=time/60; + time-=min*60; + hr=min/60; + min-=hr*60; + printf("time %02d:%02d:%02d\n", hr, min, time); +#if 1 + navigation_path_description(this); +#endif + } + return ret; +} + +struct block_list { + struct block_info blk_inf; + unsigned char *p; + unsigned char *end; + struct block_list *next; +}; + +void +route_process_street_block_graph(struct block_info *blk_inf, unsigned char *p, unsigned char *end, void *data) +{ + struct route *this=data; + struct block_list *blk_lst=this->blk_lst; + + while (blk_lst) { + if (blk_lst->blk_inf.block_number == blk_inf->block_number && blk_lst->blk_inf.file == blk_inf->file) + return; + blk_lst=blk_lst->next; + } + blk_lst=g_new(struct block_list,1); + blk_lst->blk_inf=*blk_inf; + blk_lst->p=p; + blk_lst->end=end; + blk_lst->next=this->blk_lst; + this->blk_lst=blk_lst; +#if 0 + route_street_foreach(blk_inf, p, end, data, route_process_street_graph); +#endif +} + +void +route_blocklist_free(struct route *this) +{ + struct block_list *curr,*next; + curr=this->blk_lst; + while (curr) { + next=curr->next; + g_free(curr); + curr=next; + } +} + +void +route_build_graph(struct route *this, struct map_data *mdata, struct coord *c, int coord_count) +{ + struct coord rect[2]; + struct transformation t; + + int i,j,max_dist,max_coord_dist; + int ranges[7]={0,1024000,512000,256000,128000,64000,32000}; + this->blk_lst=NULL; + struct block_list *blk_lst_curr; + + rect[0]=c[0]; + rect[1]=c[0]; + for (i = 1 ; i < coord_count ; i++) { + if (c[i].x < rect[0].x) + rect[0].x=c[i].x; + if (c[i].x > rect[1].x) + rect[1].x=c[i].x; + if (c[i].y > rect[0].y) + rect[0].y=c[i].y; + if (c[i].y < rect[1].y) + rect[1].y=c[i].y; + } + max_coord_dist=rect[1].x-rect[0].x; + if (max_coord_dist < rect[0].y-rect[1].y) + max_coord_dist=rect[0].y-rect[1].y; + max_coord_dist+=10000+max_coord_dist/2; + + printf("Collecting Blocks\n"); + for (i = 0 ; i < coord_count ; i++) { + for (j = 0 ; j < 7 ; j++) { + printf("range %d,%d\n", i, j); + max_dist=ranges[j]; + if (max_dist == 0 || max_dist > max_coord_dist) + max_dist=max_coord_dist; + + transform_setup_source_rect_limit(&t,&c[i],max_dist); + + map_data_foreach(mdata, file_street_str, &t, j+1, route_process_street_block_graph, this); + } + } + blk_lst_curr=this->blk_lst; + i=0; + while (blk_lst_curr) { + i++; + blk_lst_curr=blk_lst_curr->next; + } + printf("Block Count %d\n", i); + blk_lst_curr=this->blk_lst; + + j=0; + while (blk_lst_curr) { + j++; + printf("%d/%d\n", j, i); + route_street_foreach(&blk_lst_curr->blk_inf, blk_lst_curr->p, blk_lst_curr->end, this, route_process_street_graph); + blk_lst_curr=blk_lst_curr->next; + } +} + +void +route_process_street3(struct block_info *blk_inf, struct street_info *str_inf, unsigned char **p, unsigned char *end, void *data) +{ + int flags=0; + int i,ldist; + struct coord3d first,f,o,l; + struct coord3d cret; + int match=0; + double len=0,len_p=0; + struct route_info *rt_inf=(struct route_info *)data; + + street_get_coord(p, str_inf->bytes, blk_inf->block->c, &f.xy); + f.h=route_get_height(str_inf->str->segid, &f.xy); + + l=f; + o=f; + first=f; + i=0; + + while (*p < end) { + flags=street_get_coord(p, str_inf->bytes, blk_inf->block->c, &f.xy); + f.h=route_get_height(str_inf->str->segid, &f.xy); + if (flags && !str_inf->include) + break; + + if (i++) { + ldist=transform_distance_line_sq(&l.xy, &o.xy, &rt_inf->click.xy, &cret.xy); + if (ldist < rt_inf->dist) { + rt_inf->dist=ldist; + rt_inf->seg1=first; + rt_inf->line1=l; + rt_inf->pos=cret; + rt_inf->blk_inf=*blk_inf; + rt_inf->str_inf=*str_inf; + rt_inf->line2=o; + rt_inf->offset=i-1; + len_p=len; + match=1; + } + if (rt_inf->mode == 1) + len+=transform_distance(&l.xy, &o.xy); + } + l=o; + o=f; + if (flags) + break; + } + ldist=transform_distance_line_sq(&l.xy, &o.xy, &rt_inf->click.xy, &cret.xy); + if (ldist < rt_inf->dist) { + rt_inf->dist=ldist; + rt_inf->seg1=first; + rt_inf->line1=l; + rt_inf->pos=cret; + rt_inf->blk_inf=*blk_inf; + rt_inf->str_inf=*str_inf; + rt_inf->line2=o; + rt_inf->offset=i; + len_p=len; + match=1; + } + if (match) { + rt_inf->seg2=o; + if (rt_inf->mode == 1) { + len+=transform_distance(&l.xy, &o.xy); + len_p+=transform_distance(&rt_inf->pos.xy, &rt_inf->line1.xy); + rt_inf->seg1_len=len_p; + rt_inf->seg2_len=len-len_p; + } + } + *p-=2*str_inf->bytes; +} + + +void +route_process_street_block(struct block_info *blk_inf, unsigned char *p, unsigned char *end, void *data) +{ + route_street_foreach(blk_inf, p, end, data, route_process_street3); +} + +struct street_str * +route_info_get_street(struct route_info *rt) +{ + return rt->str_inf.str; +} + +struct block_info * +route_info_get_block(struct route_info *rt) +{ + return &rt->blk_inf; +} + +struct route_info * +route_find_nearest_street(struct map_data *mdata, struct coord *c) +{ + struct route_info *ret=g_new0(struct route_info,1); + struct transformation t; + int max_dist=1000; + + transform_setup_source_rect_limit(&t,c,max_dist); + + ret->click.xy=*c; + ret->dist=INT_MAX; + ret->mode=0; + + map_data_foreach(mdata, file_street_str, &t, 48, route_process_street_block, ret); + + return ret; +} + +void +route_find_point_on_street(struct route_info *rt_inf) +{ + unsigned char *p,*end; + + rt_inf->dist=INT_MAX; + rt_inf->mode=1; + + p=rt_inf->str_inf.p; + end=(unsigned char *)rt_inf->blk_inf.block; + end+=rt_inf->blk_inf.block->size; + + route_process_street3(&rt_inf->blk_inf, &rt_inf->str_inf, &p, end, rt_inf); +} + + +struct route_info *start,*end; +int count; + +/* XPM */ +static char * flag_xpm[] = { +"16 16 3 1", +" c None", +"+ c #000000", +"@ c #FFFF00", +"+++ ", +"+@@++ ", +"+@@@@+++ ", +"+@@@@@@@++ ", +"+@@@@@@@@@++ ", +"+@@@@@@@@@@@++ ", +"+@@@@@@@@@++ ", +"+@@@@@@@++ ", +"+@@@@+++ ", +"+@@++ ", +"+++ ", +"+ ", +"+ ", +"+ ", +"+ ", +"+ "}; + +void +route_click(struct route *this, struct container *co, int x, int y) +{ +#if 0 + GtkMap *map=co->map; + struct point pnt; + GdkBitmap *flag_mask; + GdkPixmap *flag; + struct coord c; + struct route_info *rt_inf; + GdkGC *gc; + + + pnt.x=x; + pnt.y=y; + transform_reverse(co->trans, &pnt, &c); + transform(co->trans, &c, &pnt); + rt_inf=route_find_nearest_street(co->map_data, &c); + + + route_find_point_on_street(rt_inf); + + flag=gdk_pixmap_create_from_xpm_d(GTK_WIDGET(map)->window, &flag_mask, NULL, flag_xpm); + gc=gdk_gc_new(map->DrawingBuffer); + + gdk_gc_set_clip_origin(gc,pnt.x, pnt.y-15); + gdk_gc_set_clip_mask(gc,flag_mask); + gdk_draw_pixmap(GTK_WIDGET(map)->window, + gc, + flag, + 0, 0, pnt.x, pnt.y-15, 16, 16); + printf("Segment ID 0x%lx\n", rt_inf->str_inf.str->segid); +#if 0 + printf("Segment Begin 0x%lx, 0x%lx, 0x%x\n", route_info.seg1.xy.x, route_info.seg1.xy.y, route_info.seg1.h); + printf("Segment End 0x%lx, 0x%lx, 0x%x\n", route_info.seg2.xy.x, route_info.seg2.xy.y, route_info.seg2.h); +#endif + +#if 0 + transform(map, &route_info.seg1.xy, &pnt); gdk_draw_arc(GTK_WIDGET(map)->window, map->gc[GC_BLACK], TRUE, pnt.x-r/2, pnt.y-r/2, r, r, 0, 64*360); + transform(map, &route_info.line1.xy, &pnt); gdk_draw_arc(GTK_WIDGET(map)->window, map->gc[GC_BLACK], TRUE, pnt.x-r/2, pnt.y-r/2, r, r, 0, 64*360); + transform(map, &route_info.seg2.xy, &pnt); gdk_draw_arc(GTK_WIDGET(map)->window, map->gc[GC_BLACK], TRUE, pnt.x-r/2, pnt.y-r/2, r, r, 0, 64*360); + transform(map, &route_info.line2.xy, &pnt); gdk_draw_arc(GTK_WIDGET(map)->window, map->gc[GC_BLACK], TRUE, pnt.x-r/2, pnt.y-r/2, r, r, 0, 64*360); + transform(map, &route_info.pos.xy, &pnt); gdk_draw_arc(GTK_WIDGET(map)->window, map->gc[GC_BLACK], TRUE, pnt.x-r/2, pnt.y-r/2, r, r, 0, 64*360); +#endif + printf("offset=%d\n", rt_inf->offset); + printf("seg1_len=%d\n", rt_inf->seg1_len); + printf("seg2_len=%d\n", rt_inf->seg2_len); + + if (trace) { + start=rt_inf; + count=0; + route_path_free(this); + route_find(this, start, end); + map_redraw(map); + } else { + if (! count) { + start=rt_inf; + count=1; + } + else { + end=rt_inf; + count=0; + } + } +#endif +} + +void +route_start(struct route *this, struct container *co) +{ + route_do_start(this, end, start); +} + +void +route_trace(struct container *co) +{ + trace=1-trace; +} + +void +route_data_free(void *t) +{ + route_blocklist_free(t); + route_path_free(t); + route_points_free(t); + route_segments_free(t); +} + +void +route_do_start(struct route *this, struct route_info *rt_start, struct route_info *rt_end) +{ + int res; + struct route_point *seg1,*seg2,*pos; + struct coord c[2]; + struct timeval tv[4]; + + phrase_route_calc(speech_handle); + route_data_free(this); + gettimeofday(&tv[0], NULL); + c[0]=rt_start->pos.xy; + c[1]=rt_end->pos.xy; + route_build_graph(this,this->map_data,c,2); + gettimeofday(&tv[1], NULL); + seg1=route_point_add(this, &rt_end->seg1, 1); + pos=route_point_add(this, &rt_end->pos, 2); + seg2=route_point_add(this ,&rt_end->seg2, 1); + route_segment_add(this, seg1, pos, rt_end->seg1_len, rt_end->str_inf.str, rt_end->offset, 0); + route_segment_add(this, seg2, pos, rt_end->seg2_len, rt_end->str_inf.str, -rt_end->offset, 0); + + printf("flood\n"); + route_flood(this, rt_end); + gettimeofday(&tv[2], NULL); + printf("find\n"); + res=route_find(this, rt_start, rt_end); + printf("ok\n"); + gettimeofday(&tv[3], NULL); + + printf("graph time %ld\n", (tv[1].tv_sec-tv[0].tv_sec)*1000+(tv[1].tv_usec-tv[0].tv_usec)/1000); + printf("flood time %ld\n", (tv[2].tv_sec-tv[1].tv_sec)*1000+(tv[2].tv_usec-tv[1].tv_usec)/1000); + printf("find time %ld\n", (tv[3].tv_sec-tv[2].tv_sec)*1000+(tv[3].tv_usec-tv[2].tv_usec)/1000); + phrase_route_calculated(speech_handle, this); + +} + + +int +route_destroy(void *t) +{ + struct route *this=t; + + route_data_free(t); + if (this->pos) + g_free(this->pos); + if (this->dst) + g_free(this->dst); + g_free(this); + return 0; +} + + +struct tm * +route_get_eta(struct route *this) +{ + time_t eta; + + eta=time(NULL)+this->route_time_val; + + return localtime(&eta); +} + +double +route_get_len(struct route *this) +{ + return this->route_len_val; +} + +struct route_crossings * +route_crossings_get(struct route *this, struct coord *c) +{ + struct coord3d c3; + struct route_point *pnt; + struct route_segment *seg; + int crossings=0; + struct route_crossings *ret; + + c3.xy=*c; + c3.h=0; + pnt=route_get_point(this, &c3); + seg=pnt->start; + while (seg) { + crossings++; + seg=seg->start_next; + } + seg=pnt->end; + while (seg) { + crossings++; + seg=seg->end_next; + } + ret=g_malloc(sizeof(struct route_crossings)+crossings*sizeof(struct route_crossing)); + ret->count=crossings; + return ret; +} diff --git a/route.h b/route.h new file mode 100644 index 00000000..0b249129 --- /dev/null +++ b/route.h @@ -0,0 +1,48 @@ +struct route_path_segment { + struct route_path_segment *next; + long segid; + int offset; + int dir; + int time; + int length; + struct coord c[2]; +}; + +struct route_crossing { + long segid; + int dir; +}; + +struct route_crossings { + int count; + struct route_crossing crossing[0]; +}; + +struct route; +struct map_data; +struct container; +struct route_info; + +struct route *route_new(void); +int route_destroy(); +void route_mapdata_set(struct route *this, struct map_data *mdata); +struct map_data* route_mapdata_get(struct route *this); +void route_display_points(struct route *this, struct container *co); +void route_click(struct route *this, struct container *co, int x, int y); +void route_start(struct route *this, struct container *co); +void route_set_position(struct route *this, struct coord *pos); +void route_set_destination(struct route *this, struct coord *dst); +struct coord *route_get_destination(struct route *this); +struct route_path_segment *route_path_get(struct route *, int segid); +struct route_path_segment *route_path_get_all(struct route *this); +void route_trace(struct container *co); +struct street_str *route_info_get_street(struct route_info *rt); +struct block_info *route_info_get_block(struct route_info *rt); +struct route_info *route_find_nearest_street(struct map_data *mdata, struct coord *c); +void route_find_point_on_street(struct route_info *rt_inf); +void route_do_start(struct route *this, struct route_info *rt_start, struct route_info *rt_end); +int route_find(struct route *this, struct route_info *rt_start, struct route_info *rt_end); +struct tm *route_get_eta(struct route *this); +double route_get_len(struct route *this); +struct route_crossings *route_crossings_get(struct route *this, struct coord *c); + diff --git a/search.c b/search.c new file mode 100644 index 00000000..165282ce --- /dev/null +++ b/search.c @@ -0,0 +1,442 @@ +#include <glib.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include "search.h" +#include "coord.h" +#include "country.h" +#include "town.h" +#include "street.h" +#include "street_name.h" + + +struct search { + struct map_data *map_data; + char *country; + GHashTable *country_hash; + char *postal; + char *town; + GHashTable *town_hash; + char *district; + GHashTable *district_hash; + char *street; + GHashTable *street_hash; + char *number; + int number_low, number_high; + int (*func)(struct search_destination *dest, void *user_data); + void *user_data; +}; + +struct dest_town { + int country; + int assoc; + char *name; + char postal_code[16]; + struct town town; +}; + +static GHashTable * +search_country_new(void) +{ + return g_hash_table_new_full(NULL, NULL, NULL, g_free); +} + +static int +search_country_add(struct country *cou, void *data) +{ + struct search *search=data; + struct country *cou2; + + void *first; + first=g_hash_table_lookup(search->country_hash, (void *)(cou->id)); + if (! first) { + cou2=g_new(struct country, 1); + *cou2=*cou; + g_hash_table_insert(search->country_hash, (void *)(cou->id), cou2); + } + return 0; +} + +static void +search_country_show(gpointer key, gpointer value, gpointer user_data) +{ + struct country *cou=value; + struct search *search=(struct search *)user_data; + struct search_destination dest; + + memset(&dest, 0, sizeof(dest)); + dest.country=cou; + dest.country_name=cou->name; + dest.country_car=cou->car; + dest.country_iso2=cou->iso2; + dest.country_iso3=cou->iso3; + (*search->func)(&dest, search->user_data); +} + +static guint +search_town_hash(gconstpointer key) +{ + const struct dest_town *hash=key; + gconstpointer hashkey=(gconstpointer)(hash->country^hash->assoc); + return g_direct_hash(hashkey); +} + +static gboolean +search_town_equal(gconstpointer a, gconstpointer b) +{ + const struct dest_town *t_a=a; + const struct dest_town *t_b=b; + if (t_a->assoc == t_b->assoc && t_a->country == t_b->country) { + if (t_a->name && t_b->name && strcmp(t_a->name, t_b->name)) + return FALSE; + return TRUE; + } + return FALSE; +} + + +static GHashTable * +search_town_new(void) +{ + return g_hash_table_new_full(search_town_hash, search_town_equal, NULL, g_free); +} + + +static int +search_town_add(struct town *town, void *data) +{ + struct search *search=data; + struct dest_town *first; + + struct dest_town cmp; + char *zip1, *zip2; + + if (town->id == 0x1d546b7e) { + printf("found\n"); + } + cmp.country=town->country; + cmp.assoc=town->street_assoc; + cmp.name=town->name; + first=g_hash_table_lookup(search->town_hash, &cmp); + if (! first) { + first=g_new(struct dest_town, 1); + first->country=cmp.country; + first->assoc=cmp.assoc; + strcpy(first->postal_code, town->postal_code2); + first->name=town->name; + first->town=*town; + g_hash_table_insert(search->town_hash, first, first); + } else { + zip1=town->postal_code2; + zip2=first->postal_code; + while (*zip1 && *zip2) { + if (*zip1 != *zip2) { + while (*zip2) { + *zip2++='.'; + } + break; + } + zip1++; + zip2++; + } + } + cmp.name=NULL; + cmp.assoc=town->id; + first=g_hash_table_lookup(search->district_hash, &cmp); + if (! first) { + first=g_new(struct dest_town, 1); + first->country=cmp.country; + first->assoc=cmp.assoc; + first->name=NULL; + first->town=*town; + g_hash_table_insert(search->district_hash, first, first); + } + return 0; +} + +static void +search_town_search(gpointer key, gpointer value, gpointer user_data) +{ + struct country *cou=value; + struct search *search=user_data; + + town_search_by_name(search->map_data, cou->id, search->town, 1, search_town_add, search); +} + +static void +search_town_set(const struct dest_town *town, struct search_destination *dest, int full) +{ + char country[32]; + struct country *cou; + if ((cou=country_get_by_id(town->country))) { + dest->country=cou; + dest->country_name=cou->name; + dest->country_car=cou->car; + dest->country_iso2=cou->iso2; + dest->country_iso3=cou->iso3; + } else { + sprintf(country,"(%d)", town->country); + dest->country=NULL; + dest->country_car=country; + } + if (full) { + dest->town_postal=(char *)(town->town.postal_code2); + dest->town_name=g_convert(town->town.name,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + if (town->town.district[0]) + dest->district=g_convert(town->town.district,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + else + dest->district=NULL; + } else { + dest->town_postal=(char *)(town->postal_code); + dest->town_name=g_convert(town->name,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + } +} + + +static void +search_town_show(gpointer key, gpointer value, gpointer user_data) +{ + struct dest_town *town=value; + struct search *search=user_data; + struct search_destination dest; + + memset(&dest, 0, sizeof(dest)); + dest.town=&town->town; + dest.street_name=NULL; + dest.c=town->town.c; + search_town_set(town, &dest, 0); + + (*search->func)(&dest, search->user_data); +} + + +GHashTable * +search_street_new(void) +{ + return g_hash_table_new_full(NULL, NULL, NULL, g_free); +} + + +static int +search_street_add(struct street_name *name, void *data) +{ + struct search *search=data; + struct street_name *name2; + + name2=g_new(struct street_name, 1); + *name2=*name; + g_hash_table_insert(search->street_hash, name2, name2); + return 0; +} + +static int +number_partial(int search, int ref, int ext) +{ + int max=1; + + printf("number_partial(%d,%d,%d)", search, ref, ext); + if (ref >= 10) + max=10; + if (ref >= 100) + max=100; + if (ref >= 1000) + max=1000; + while (search < max) { + search*=10; + search+=ext; + } + printf("max=%d result=%d\n", max, search); + return search; +} + +static int +check_number(int low, int high, int s_low, int s_high) +{ + int debug=0; + + if (debug) + printf("check_number(%d,%d,%d,%d)\n", low, high, s_low, s_high); + if (low <= s_high && high >= s_low) + return 1; + if (s_low == s_high) { + if (low <= number_partial(s_high, high, 9) && high >= number_partial(s_low, low, 0)) + return 1; + } + if (debug) + printf("return 0\n"); + return 0; +} + +static void +search_street_show_common(gpointer key, gpointer value, gpointer user_data, int number) +{ + struct street_name *name=value; + struct search *search=user_data; + char *utf8; + struct dest_town cmp; + struct dest_town *town; + char buffer[32]; + struct street_name_info info; + struct street_name_number_info num_info; + struct search_destination dest; + int debug=0; + + memset(&dest, 0, sizeof(dest)); + name->tmp_len=name->aux_len; + name->tmp_data=name->aux_data; + while (street_name_get_info(&info, name)) { + cmp.country=info.country; + cmp.assoc=info.dist; + cmp.name=NULL; + town=g_hash_table_lookup(search->district_hash, &cmp); + if (debug) + printf("town=%p\n", town); + if (town) { + search_town_set(town, &dest, 1); + utf8=g_convert(name->name2,-1,"utf-8","iso8859-1",NULL,NULL,NULL); + dest.street_name=utf8; + if (number) { + info.tmp_len=info.aux_len; + info.tmp_data=info.aux_data; + while (street_name_get_number_info(&num_info, &info)) { + dest.town=&town->town; + dest.street=name; + dest.c=num_info.c; + if (check_number(num_info.first, num_info.last, search->number_low, search->number_high)) { + if (num_info.first == num_info.last) + sprintf(buffer,"%d",num_info.first); + else + sprintf(buffer,"%d-%d",num_info.first,num_info.last); + dest.street_number=buffer; + (*search->func)(&dest, search->user_data); + } + } + } else { + dest.town=&town->town; + dest.street=name; + dest.c=info.c; + (*search->func)(&dest, search->user_data); + } + g_free(utf8); + } else { + printf("Town for '%s' not found\n", name->name2); + } + } +} + +static void +search_street_show(gpointer key, gpointer value, gpointer user_data) +{ + search_street_show_common(key, value, user_data, 0); +} + +static void +search_street_show_number(gpointer key, gpointer value, gpointer user_data) +{ + search_street_show_common(key, value, user_data, 1); +} + +static void +search_street_search(gpointer key, gpointer value, gpointer user_data) +{ + const struct dest_town *town=value; + struct search *search=user_data; + street_name_search(search->map_data, town->country, town->assoc, search->street, 1, search_street_add, search); +} + + + +void search_update(struct search *search, enum search_param what, char *val) +{ + char *dash; + + if (what == search_country) { + if (search->country_hash) g_hash_table_destroy(search->country_hash); + search->country_hash=NULL; + } + if (what == search_country || what == search_town) { + if (search->town_hash) g_hash_table_destroy(search->town_hash); + if (search->district_hash) g_hash_table_destroy(search->district_hash); + search->town_hash=NULL; + search->district_hash=NULL; + } + + if (what == search_country || what == search_town || what == search_street) { + if (search->street_hash) g_hash_table_destroy(search->street_hash); + search->street_hash=NULL; + } + + if (what == search_country) { + g_free(search->country); + search->country=g_strdup(val); + if (val) { + search->country_hash=search_country_new(); + country_search_by_name(val, 1, search_country_add, search); + country_search_by_car(val, 1, search_country_add, search); + country_search_by_iso2(val, 1, search_country_add, search); + country_search_by_iso3(val, 1, search_country_add, search); + g_hash_table_foreach(search->country_hash, search_country_show, search); + } + } + if (what == search_town) { + g_free(search->town); + search->town=g_strdup(val); + if (val) { + search->town_hash=search_town_new(); + search->district_hash=search_town_new(); + g_hash_table_foreach(search->country_hash, search_town_search, search); + g_hash_table_foreach(search->town_hash, search_town_show, search); + } + } + if (what == search_street) { + g_free(search->street); + search->street=g_strdup(val); + if (val) { + search->street_hash=search_street_new(); + g_hash_table_foreach(search->town_hash, search_street_search, search); + g_hash_table_foreach(search->street_hash, search_street_show, search); + } + } + if (what == search_number) { + g_free(search->number); + search->number=g_strdup(val); + if (val) { + char buffer[strlen(val)+1]; + strcpy(buffer, val); + dash=index(buffer,'-'); + if (dash) { + *dash++=0; + search->number_low=atoi(buffer); + if (strlen(val)) + search->number_high=atoi(dash); + else + search->number_high=10000; + } else { + if (!strlen(val)) { + search->number_low=0; + search->number_high=10000; + } else { + search->number_low=atoi(val); + search->number_high=atoi(val); + } + } + g_hash_table_foreach(search->street_hash, search_street_show_number, search); + } + } +} + +struct search * +search_new(struct map_data *mdat, char *country, char *postal, char *town, char *district, char *street, char *number, int (*func)(struct search_destination *dest, void *user_data), void *user_data) +{ + struct search *this=g_new0(struct search,1); + this->map_data=mdat; + this->country=g_strdup(country); + this->postal=g_strdup(postal); + this->town=g_strdup(town); + this->district=g_strdup(district); + this->street=g_strdup(street); + this->number=g_strdup(number); + this->func=func; + this->user_data=user_data; + return this; +} diff --git a/search.h b/search.h new file mode 100644 index 00000000..88f38826 --- /dev/null +++ b/search.h @@ -0,0 +1,30 @@ +enum search_param { + search_country, + search_postal, + search_town, + search_district, + search_street, + search_number +}; + +struct search_destination { + char *country_name; + char *country_car; + char *country_iso2; + char *country_iso3; + char *town_postal; + char *town_name; + char *district; + char *street_name; + char *street_number; + struct country *country; + struct town *town; + struct street_name *street; + struct coord *c; +}; + +struct search; +struct map_data; + +void search_update(struct search *search, enum search_param what, char *val); +struct search *search_new(struct map_data *mdat, char *country, char *postal, char *town, char *district, char *street, char *number, int (*func)(struct search_destination *dest, void *user_data), void *user_data); diff --git a/speech.c b/speech.c new file mode 100644 index 00000000..48ba8263 --- /dev/null +++ b/speech.c @@ -0,0 +1,61 @@ +/* speechd simple client program + * CVS revision: $Id: speech.c,v 1.1.1.1 2005-11-27 20:48:30 martin-s Exp $ + * Author: Tomas Cerha <cerha@brailcom.cz> */ + +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <unistd.h> +#include <stdio.h> +#include <stdlib.h> +#include <glib.h> +#include <stdarg.h> + +#include <libspeechd.h> +#include "speech.h" + +struct speech { + int sockfd; +}; + +struct speech * +speech_new(void) { + struct speech *this; + int sockfd; + + sockfd = spd_init("map","main"); + if (sockfd == 0) + return NULL; + this=g_new(struct speech,1); + if (this) { + this->sockfd=sockfd; + } + return this; +} + +int +speech_say(struct speech *this, char *text) { + int err; + + err = spd_sayf(this->sockfd, 2, text); + if (err != 1) + return 1; + return 0; +} + +int +speech_sayf(struct speech *this, char *format, ...) { + char buffer[8192]; + va_list ap; + va_start(ap,format); + vsnprintf(buffer, 8192, format, ap); + return speech_say(this, buffer); +} + +int +speech_destroy(struct speech *this) { + spd_close(this->sockfd); + g_free(this); + return 0; +} diff --git a/speech.h b/speech.h new file mode 100644 index 00000000..a4038e06 --- /dev/null +++ b/speech.h @@ -0,0 +1,5 @@ +struct speech; +struct speech *speech_new(void); +int speech_say(struct speech *this, char *text); +int speech_sayf(struct speech *this, char *format, ...); +int speech_destroy(struct speech *this); diff --git a/statusbar.h b/statusbar.h new file mode 100644 index 00000000..1b9092c9 --- /dev/null +++ b/statusbar.h @@ -0,0 +1,10 @@ +struct route; +struct statusbar_gui; + +struct statusbar { + void (*statusbar_destroy)(struct statusbar *this); + void (*statusbar_mouse_update)(struct statusbar *this, struct transformation *tr, struct point *p); + void (*statusbar_route_update)(struct statusbar *this, struct route *route); + void (*statusbar_gps_update)(struct statusbar *this, int sats, int qual, double lng, double lat, double height, double direction, double speed); + struct statusbar_gui *gui; +}; diff --git a/street.c b/street.c new file mode 100644 index 00000000..f449f1e1 --- /dev/null +++ b/street.c @@ -0,0 +1,455 @@ +#include <assert.h> +#include <stdio.h> +#include <malloc.h> +#include <unistd.h> +#include <glib.h> +#include "container.h" +#include "coord.h" +#include "map_data.h" +#include "file.h" +#include "block.h" +#include "route.h" +#include "street.h" +#include "street_data.h" +#include "street_name.h" +#include "display.h" +#include "draw_info.h" +#include "data_window.h" +#include "data.h" +#include "tree.h" + + +static void +street_draw_segment(struct container *co, struct segment *seg, unsigned char **pos, unsigned char *end, struct coord *ref, int bytes, int include, int disp) +{ + int j,flags,limit; + struct coord f; + struct coord l[2]; + struct street_str *str=seg->data[0]; + char *label; + struct street_name name; + struct param_list param[100]; + struct route_path_segment *route; + struct display_list **displ=co->disp; + int max=10000; + struct point xpoints[max]; + + flags=0; + j=0; + while (! flags && *pos < end) { + flags=street_get_coord(pos, bytes, ref, &f); + if (! j) { + l[0]=f; + l[1]=f; + } else { + if (include || !flags) { + if (f.x < l[0].x) l[0].x=f.x; + if (f.x > l[1].x) l[1].x=f.x; + if (f.y > l[0].y) l[0].y=f.y; + if (f.y < l[1].y) l[1].y=f.y; + } + } + transform(co->trans, &f, &xpoints[j]); + if (! j) + flags=0; + j++; + assert(j < max); + } + if (! include) + j--; + if (is_visible(co->trans, l) && str->type) { + label=NULL; + if (str->nameid) { + street_name_get_by_id(&name, seg->blk_inf.mdata, str->nameid); + if (name.name2[0]) + label=name.name2; + else + label=name.name1; + } + if (str->nameid && name.townassoc < 0 ) { + char buffer[128]; + sprintf(buffer,"-0x%x", -name.townassoc); + label=g_strdup(buffer); + } + limit=0; + if (str->limit == 0x30) + limit=1; + if (str->limit == 0x03) + limit=-1; + if (str->type & 0x40) + limit=-limit; + display_add(&displ[disp], 2, limit, label, j, xpoints, NULL, seg, sizeof(*seg)); + if (co->route && (route=route_path_get(co->route, str->segid))) { + if (! route->offset) + display_add(&displ[display_street_route], 2, 0, label, j, xpoints, NULL, NULL, 0); + else if (route->offset > 0) + display_add(&displ[display_street_route], 2, 0, label, route->offset, xpoints, NULL, NULL, 0); + else + display_add(&displ[display_street_route], 2, 0, label, j+route->offset, xpoints-route->offset, NULL, NULL, 0); + } + if (co->data_window[data_window_type_street]) + data_window_add(co->data_window[data_window_type_street], param, street_get_param(seg, param, 100, 0)); + } + *pos-=2*bytes; +} + +void +street_safety_check(struct street_str *str) +{ +#if 0 + if (!((str->type & 0xf0) == 0x0 || (str->type & 0xf0) == 0x40)) { + printf("str->type=0x%x\n", str->type); + } + assert((str->type & 0xf0) == 0x0 || (str->type & 0xf0) == 0x40); +#endif + assert(str->type != 0xe && str->type != 0x4e && str->type != 0x40); + assert(str->unknown2 == str->unknown3); + assert(str->unknown2 == 0x40 || str->unknown2 == 0x44); +} + +struct street_header_type { + struct street_header *header; + int type_count; + struct street_type *type; +}; + +static void +street_header_type_get(struct block *blk, unsigned char **p_p, struct street_header_type *ret) +{ + unsigned char *p=*p_p; + ret->header=(struct street_header *)p; + p+=sizeof(struct street_header); + ret->type_count=blk->count; + ret->type=(struct street_type *)p; + p+=ret->type_count*sizeof(struct street_type); + assert(ret->header->count == blk->count); + *p_p=p; +} + +static void +street_coord_get_begin(unsigned char **p_p) +{ + unsigned char *p=*p_p; + struct street_str *str; + + str=(struct street_str *)p; + while (str->segid) { + str++; + } + p=(unsigned char *)str; + p+=4; + *p_p=p; +} + +void +street_draw_block(struct block_info *blk_inf, unsigned char *p, unsigned char *end, void *data) +{ + struct street_str *str; + struct street_header_type header_type; + struct street_type *str_type; + int include,count,ncount,bytes,offset; + struct draw_info *drw_inf=data; + struct segment seg; + + seg.blk_inf=*blk_inf; + + street_header_type_get(blk_inf->block, &p, &header_type); + if (header_type.header->order >= drw_inf->limit) + return; + + str_type=header_type.type; + bytes=street_get_bytes(blk_inf->block); + str=(struct street_str *)p; + count=0; + ncount=0; + street_coord_get_begin(&p); + str_type--; + while (str->segid) { + include=1; + if (str[1].segid < 0) { + include=0; + str_type++; + } + seg.data[0]=str; + seg.data[1]=str_type; + seg.data[2]=p; + seg.data[3]=header_type.header; + street_safety_check(str); + offset=0; + if (header_type.header->order < 0x2) + offset=3; + else if (header_type.header->order < 0x4 && str->type != 0x6 && str->type != 0x46) + offset=2; + else if (header_type.header->order < 0x6) + offset=1; + if (str->limit == 0x33) + offset=4; + street_draw_segment(drw_inf->co, &seg, &p, end-4, blk_inf->block->c, bytes, include, drw_inf->display+offset); + str++; + } +} + +void +street_bti_draw_block(struct block_info *blk_inf, unsigned char *p, unsigned char *end, void *data) +{ + struct draw_info *drw_inf=data; + struct street_bti *str; + struct point pnt; + struct param_list param[100]; + struct segment seg; + + while (p < end) { + str=(struct street_bti *)p; + seg.data[0]=str; + p+=sizeof(*str); + if (transform(drw_inf->co->trans, &str->c, &pnt)) { + display_add(&drw_inf->co->disp[display_bti], 4, 0, NULL, 1, &pnt, NULL, &seg, sizeof(seg)); + if (drw_inf->co->data_window[data_window_type_point]) + data_window_add(drw_inf->co->data_window[data_window_type_point], param, street_bti_get_param(&seg, param, 100)); + } + } +} + +void +street_route_draw(struct container *co) +{ + struct route_path_segment *route=NULL; + struct point xpoints[2]; + + if (co->route) + route=route_path_get_all(co->route); + while (route) { + if (!route->segid) { + transform(co->trans, &route->c[0], &xpoints[0]); + transform(co->trans, &route->c[1], &xpoints[1]); + display_add(&co->disp[display_street_route], 2, 0, NULL, 2, xpoints, NULL, NULL, 0); + } + route=route->next; + } +} + +struct street_coord * +street_coord_get(struct block_info *blk_inf, struct street_str *str) +{ + struct block *blk; + unsigned char *p=(unsigned char *)(blk_inf->block),*end,*p_sav; + struct street_header_type hdr_type; + struct street_str *str_curr; + struct coord f,*c; + struct street_coord *ret; + int bytes,num,points,include; + int debug=0; + + end=p; + blk=block_get(&p); + end+=blk->size; + + street_header_type_get(blk, &p, &hdr_type); + str_curr=(struct street_str *)p; + num=str-str_curr; + street_coord_get_begin(&p); + bytes=street_get_bytes(blk); + if (debug) { + printf("num=%d\n", num); + } + street_get_coord(&p, bytes, blk->c, &f); + while (num && str_curr->segid) { + while (! street_get_coord(&p, bytes, blk->c, &f) && p < end); + str_curr++; + num--; + } + include=(str[1].segid > 0); + p_sav=p-2*bytes; + points=1+include; + while (! street_get_coord(&p, bytes, blk->c, &f) && p < end) + points++; + + if (debug) + printf("p=%p points=%d\n",p_sav, points); + p=p_sav; + ret=malloc(sizeof(struct street_coord)+points*sizeof(struct coord)); + ret->count=points; + c=ret->c; + while (points) { + street_get_coord(&p, bytes, blk->c, c); + c++; + points--; + } + return ret; +} + +#if 0 +struct street_nearest * +street_find_nearest(struct map_data *mdata, struct coord *c) +{ + struct street_nearest *ret=g_new0(struct street_nearest,1); + struct transformation t; + int max_dist=1000; + + transform_setup_source_rect_limit(&t,c,max_dist); + + ret->click.xy=*c; + ret->dist=INT_MAX; + ret->mode=0; + + map_data_foreach(mdata, file_street_str, &t, 48, route_process_street_block, ret); + + ret->mode=1; + ret->dist=INT_MAX; + + return ret; +} + +#endif + +int +street_get_by_id(struct map_data *mdat, int id, struct block_info *res_blk_inf, struct street_str **res_str) +{ + int debug=0; + int res,block,num; + struct map_data *mdat_res; + struct block *blk; + unsigned char *p; + struct street_header_type hdr_type; + struct street_str *str; + + if (tree_search_hv_map(mdat, file_street_str, (id >> 8) | 0x31000000, id & 0xff, &res, &mdat_res)) { + return 1; + } + + block=res >> 12; + num=res & 0xfff; + if (debug) { + printf("block=0x%x\n", block); + printf("num=0x%x\n", num); + } + blk=block_get_byindex(mdat_res->file[file_street_str], block, &p); + res_blk_inf->mdata=mdat_res; + res_blk_inf->file=mdat_res->file[file_street_str]; + res_blk_inf->block=blk; + if (debug) { + printf("blk->count=0x%x\n", blk->count); + } + street_header_type_get(blk, &p, &hdr_type); + str=(struct street_str *)p; + str+=num; + *res_str=str; + return 0; +} + +int +street_get_param(struct segment *seg, struct param_list *param, int count, int verbose) +{ + char buffer[1024]; + int i=count,j; + struct street_str *str=seg->data[0]; + struct street_type *type=seg->data[1]; + struct street_name name; + struct street_name_info name_info; +#if 0 + struct street_name_number_info name_number_info; +#endif + + param_add_hex("Type-Addr", (unsigned char *)type-seg->blk_inf.file->begin, ¶m, &count); + param_add_hex("Order", type->order, ¶m, &count); + param_add_hex("Country", type->country, ¶m, &count); + + param_add_hex("Addr", (unsigned char *)str-seg->blk_inf.file->begin, ¶m, &count); + param_add_hex_sig("Seg-Id", str->segid, ¶m, &count); + param_add_hex("Limit", str->limit, ¶m, &count); + param_add_hex("Unknown2", str->unknown2, ¶m, &count); + param_add_hex("Unknown3", str->unknown3, ¶m, &count); + param_add_hex("Type", str->type, ¶m, &count); + param_add_hex("Name-Id", str->nameid, ¶m, &count); + if (str->segid) { + street_name_get_by_id(&name, seg->blk_inf.mdata, str->nameid); + + param_add_hex("Len", name.len, ¶m, &count); + param_add_hex("Country", name.country, ¶m, &count); + param_add_hex_sig("TownAssoc", name.townassoc, ¶m, &count); + printf("TownAssoc 0x%lx\n", name.townassoc+str->segid); + param_add_string("Name1", name.name1, ¶m, &count); + param_add_string("Name2", name.name2, ¶m, &count); + param_add_hex("Segments", name.segment_count, ¶m, &count); + if (verbose) { + for (j = 0 ; j < name.segment_count ; j++) { + sprintf(buffer,"0x%x 0x%x", name.segments[j].country, name.segments[j].segid); + param_add_string("Segment", buffer, ¶m, &count); + } + param_add_hex("Len", name.aux_len, ¶m, &count); + while (street_name_get_info(&name_info, &name)) { + param_add_hex("Len", name_info.len, ¶m, &count); + param_add_hex("Tag", name_info.tag, ¶m, &count); + param_add_hex("Dist", name_info.dist, ¶m, &count); + param_add_hex("Country", name_info.country, ¶m, &count); + param_add_hex("X", name_info.c->x, ¶m, &count); + param_add_hex("Y", name_info.c->y, ¶m, &count); + param_add_dec("First", name_info.first, ¶m, &count); + param_add_dec("Last", name_info.last, ¶m, &count); + param_add_hex("Segments", name_info.segment_count, ¶m, &count); + } +#if 0 + int tag; + int k, segs; + printf("\n"); + printf("Len 0x%x\n",get_short(&stn)); + tag=*stn++; + printf("Tag 0x%x\n",tag); + if (tag == 0xc0 || tag == 0xd0 || tag == 0xe0) { + printf("DistAssoc 0x%lx\n",get_long(&stn)); + printf("Country 0x%lx\n",get_long(&stn)); + printf("X 0x%lx\n",get_long(&stn)); + printf("Y 0x%lx\n",get_long(&stn)); + printf("First %ld\n",get_triple(&stn)); + printf("Last %ld\n",get_triple(&stn)); + segs=get_long(&stn); + printf("Segs 0x%x\n",segs); + for (k = 0 ; k < 0 ; k++) { + printf("SegId 0x%lx\n", get_long(&stn)); + printf("Country 0x%lx\n",get_long(&stn)); + } + } else if (tag == 0x8f || tag == 0xaa || tag == 0xab || tag == 0xae || tag == 0xaf || tag == 0x9a || tag == 0x9e || tag == 0x9f) { + printf("X 0x%lx\n",get_long(&stn)); + printf("Y 0x%lx\n",get_long(&stn)); + printf("First %ld\n",get_triple(&stn)); + printf("Last %ld\n",get_triple(&stn)); + printf("SegId 0x%lx\n",get_long(&stn)); + printf("Country 0x%lx\n",get_long(&stn)); + } else { + printf("Unknown tag 0x%x\n", tag); + break; + } + } +#endif + } + } else { + if (!verbose) { + param_add_string("Len", "", ¶m, &count); + param_add_string("Country", "", ¶m, &count); + param_add_string("TownAssoc", "", ¶m, &count); + param_add_string("Name1", "", ¶m, &count); + param_add_string("Name2", "", ¶m, &count); + param_add_string("Segments", "", ¶m, &count); + } + } + return i-count; +} + +int +street_bti_get_param(struct segment *seg, struct param_list *param, int count) +{ + int i=count; + struct street_bti *str=seg->data[0]; + + param_add_hex("Addr", (unsigned char *)str-seg->blk_inf.file->begin, ¶m, &count); + param_add_hex("Unknown1", str->unknown1, ¶m, &count); + param_add_hex("Segid1", str->segid1, ¶m, &count); + param_add_hex("Country1", str->country1, ¶m, &count); + param_add_hex("Segid2", str->segid2, ¶m, &count); + param_add_hex("Country2", str->country2, ¶m, &count); + param_add_hex("Unknown5", str->unknown5, ¶m, &count); + param_add_hex("X", str->c.x, ¶m, &count); + param_add_hex("Y", str->c.y, ¶m, &count); + + return i-count; +} diff --git a/street.h b/street.h new file mode 100644 index 00000000..65d024f1 --- /dev/null +++ b/street.h @@ -0,0 +1,53 @@ +struct container; +struct block_info; +struct segment; + +struct street_header { + unsigned char order; + int count; +} __attribute__((packed)); + +struct street_type { + unsigned char order; + unsigned short country; +} __attribute__((packed)); + +struct street_str { + long segid; + unsigned char limit; /* 0x03,0x30=One Way,0x33=No Passing */ + unsigned char unknown2; + unsigned char unknown3; + unsigned char type; + unsigned long nameid; +}; + +struct street_bti { + unsigned char unknown1; + unsigned long segid1; + unsigned long country1; + unsigned long segid2; + unsigned long country2; + unsigned char unknown5; + struct coord c; +} __attribute__((packed)); + +struct street_route { + struct street_route *next; + long segid; + int offset; + struct coord c[2]; +}; + +struct street_coord { + int count; + struct coord c[0]; +}; + + +void street_draw_block(struct block_info *blk_inf, unsigned char *start, unsigned char *end, void *data); +struct street_coord *street_coord_get(struct block_info *blk_inf, struct street_str *str); +int street_get_by_id(struct map_data *mdat, int id, struct block_info *res_blk_inf, struct street_str **res_str); +void street_bti_draw_block(struct block_info *blk_inf, unsigned char *start, unsigned char *end, void *data); +int street_get_param(struct segment *seg, struct param_list *param, int count, int verbose); +int street_bti_get_param(struct segment *seg, struct param_list *param, int count); +void street_route_draw(struct container *co); diff --git a/street_data.h b/street_data.h new file mode 100644 index 00000000..a7701430 --- /dev/null +++ b/street_data.h @@ -0,0 +1,60 @@ +static inline int street_get_bytes(struct block *blk) +{ + int bytes,dx,dy; + bytes=2; + dx=blk->c[1].x-blk->c[0].x; + dy=blk->c[0].y-blk->c[1].y; + + if (dx > 32767 || dy > 32767) + bytes=3; + if (dx > 8388608 || dy > 8388608) + bytes=4; + + return bytes; +} + +static inline int street_get_coord(unsigned char **pos, int bytes, struct coord *ref, struct coord *f) +{ + unsigned char *p; + int x,y,flags=0; + + p=*pos; + x=*p++; + x|=(*p++) << 8; + if (bytes == 2) { + if ( x > 0x7fff) { + x=0x10000-x; + flags=1; + } + } + else if (bytes == 3) { + x|=(*p++) << 16; + if ( x > 0x7fffff) { + x=0x1000000-x; + flags=1; + } + } else { + x|=(*p++) << 16; + x|=(*p++) << 24; + if (x < 0) { + x=-x; + flags=1; + } + } + y=*p++; + y|=(*p++) << 8; + if (bytes == 3) { + y|=(*p++) << 16; + } else if (bytes == 4) { + y|=(*p++) << 16; + y|=(*p++) << 24; + } + f->x=ref[0].x+x; + f->y=ref[1].y+y; +#if 0 + printf("0x%x,0x%x + 0x%x,0x%x = 0x%x,0x%x", x, y, ref[0].x, ref[1].y, f->x, f->y); +#endif + *pos=p; + return flags; +} + diff --git a/street_name.c b/street_name.c new file mode 100644 index 00000000..202c8ae5 --- /dev/null +++ b/street_name.c @@ -0,0 +1,260 @@ +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#include "map_data.h" +#include "street_name.h" +#include "file.h" +#include "block.h" +#include "data.h" +#include "tree.h" + +void +street_name_get_by_id(struct street_name *name, struct map_data *mdat, unsigned long id) +{ + unsigned char *p; + if (id) { + p=mdat->file[file_strname_stn]->begin+id+0x2000; + street_name_get(name, &p); + } +} + +void +street_name_get(struct street_name *name, unsigned char **p) +{ + unsigned char *start=*p; + name->len=get_short(p); + name->country=get_short(p); + name->townassoc=get_long(p); + name->name1=get_string(p); + name->name2=get_string(p); + name->segment_count=get_long(p); + name->segments=(struct street_name_segment *)(*p); + (*p)+=(sizeof (struct street_name_segment))*name->segment_count; + name->aux_len=name->len-(*p-start); + name->aux_data=*p; + name->tmp_len=name->aux_len; + name->tmp_data=name->aux_data; + (*p)+=name->aux_len; +} + + +struct street_name_index { + unsigned short country; + long town_assoc; + char name[0]; +} __attribute__((packed)); + +struct street_search_priv { + struct street_name_index *search; + int partial; + struct block_offset last_leaf; + struct map_data *last_mdat; + int last_res; +}; + +int street_name_compare(struct street_name_index *i1, struct street_name_index *i2, int partial) +{ + char c1_u,c2_u; + int ret=0; + int debug=0; + + if (i1->country > i2->country) + ret=2; + if (i1->country < i2->country) + ret=-2; + if (! ret) { + if (debug) + printf("town: %ld vs %ld\n", i1->town_assoc,i2->town_assoc); + if (i1->town_assoc > i2->town_assoc) + ret=2; + if (i1->town_assoc < i2->town_assoc) + ret=-2; + if (! ret) { + char *c1=i1->name; + char *c2=i2->name; + if (debug) + printf("name: '%s' vs '%s'\n", c1, c2); + for (;;) { + c1_u=toupper(*c1); + c2_u=toupper(*c2); + if (c1_u == c2_u && c1) { + c1++; + c2++; + } else { + if (! c1_u && ! c2_u) { + if (debug) + printf("return 0: end of strings\n"); + ret=0; + break; + } + if (c1_u == '\0' && c2_u == '\t') { + if (debug) + printf("return 0: delimiter found\n"); + ret=0; + break; + } + if (c1_u == '\0' && partial) { + ret=-1; + break; + } + if (c1_u > c2_u) { + ret=2; + break; + } + if (c1_u < c2_u) { + ret=-2; + break; + } + } + } + } + } + return ret; +} + +static int +street_name_tree_process(int version, int leaf, unsigned char **s2, struct map_data *mdat, void *data) +{ + int ret; + struct street_search_priv *priv_data=data; + struct block_offset *blk_off; + int debug=0; + + blk_off=(struct block_offset *)(*s2); + if (debug) + printf("0x%lx\n", get_long(s2)); + else + get_long(s2); + struct street_name_index *i1=priv_data->search; + struct street_name_index *i2=(struct street_name_index *)(*s2); + + if (debug) { + printf("Country %d %d\n",i1->country, i2->country); + printf("Town_Assoc 0x%lx 0x%lx\n",i1->town_assoc, i2->town_assoc); + printf("Name '%s' '%s'\n",i1->name, i2->name); + printf("Leaf Data 0x%x 0x%x %d\n", blk_off->offset, blk_off->block, sizeof(*blk_off)); + } + *s2+=sizeof(*i2)+strlen(i2->name)+1; + ret=street_name_compare(i1, i2, priv_data->partial); + if (ret <= 0 && leaf == 1 && i1->country == i2->country && priv_data->last_res > 0) { + if (debug) + printf("street_tree_process: file='%s'\n", mdat->file[file_strname_stn]->name); + priv_data->last_leaf=*blk_off; + priv_data->last_mdat=mdat; + priv_data->last_res=ret; + } + if (debug) + printf("ret=%d\n", ret); + return ret; +} + +int +street_name_search(struct map_data *mdat, int country, int town_assoc, const char *name, int partial, int (*func)(struct street_name *name, void *data), void *data) +{ + struct street_search_priv priv; + unsigned char idx_buffer[strlen(name)+1+sizeof(struct street_name_index)]; + struct street_name_index *idx=(struct street_name_index *)idx_buffer; + struct block *blk; + unsigned char *p,*end; + int blk_num,res; + struct street_name str_name; + char buffer2[4096]; + struct street_name_index *idx2=(struct street_name_index *)buffer2; + int ret,debug=0; + + priv.partial=partial; + idx->country=country; + idx->town_assoc=town_assoc; + strcpy(idx->name, name); + priv.search=idx; + priv.last_res=1; + priv.last_mdat=NULL; + + tree_search_map(mdat, file_strname_stn, "b1", street_name_tree_process, &priv); + +#if 0 + if (debug) + printf("street_search_by_name: name='%s' leaf_data=0x%x priv=%p\n",name,priv.last_leaf.data,&priv); +#endif + if (!priv.last_mdat) + return 0; + blk_num=priv.last_leaf.offset; + if (debug) { + printf("block_num 0x%x\n", blk_num); + printf("file %p\n", priv.last_mdat->file[file_strname_stn]); + } + blk=block_get_byindex(priv.last_mdat->file[file_strname_stn], blk_num, &p); + end=(unsigned char *)blk; + end+=blk->size; + + p=(unsigned char *)blk; + p+=12; + if (debug) + printf("p=%p\n",p); + while (p < end) { + street_name_get(&str_name, &p); + idx2->country=str_name.country; + idx2->town_assoc=str_name.townassoc; + strcpy(idx2->name, str_name.name2); + res=street_name_compare(idx,idx2,partial); + if (res == 0 || res == -1) { + if (debug) + printf("Add res=%d '%s' '%s'\n",res,str_name.name1,str_name.name2); + ret=(*func)(&str_name, data); + if (ret) + return 1; + } + if (res < -1) + break; + } + if (debug) + printf("street_search_by_name: %p vs %p\n", p, end); + return 0; +} + + +int +street_name_get_info(struct street_name_info *inf, struct street_name *name) +{ + unsigned char *p=name->tmp_data; + + if (name->tmp_len <= 0) + return 0; + inf->len=get_short(&p); + inf->tag=*p++; + inf->dist=get_long(&p); + inf->country=get_long(&p); + inf->c=coord_get(&p); + inf->first=get_triple(&p); + inf->last=get_triple(&p); + inf->segment_count=get_long(&p); + inf->segments=(struct street_segment *)p; + p+=sizeof(struct street_name_segment)*inf->segment_count; + inf->aux_len=name->tmp_data+name->tmp_len-p; + inf->aux_data=p; + inf->tmp_len=inf->aux_len; + inf->tmp_data=inf->aux_data; + name->tmp_data+=inf->len; + name->tmp_len-=inf->len; + + return 1; +} + +int +street_name_get_number_info(struct street_name_number_info *num, struct street_name_info *inf) +{ + unsigned char *p=inf->tmp_data; + + if (inf->tmp_len <= 0) + return 0; + num->len=get_short(&p); + num->tag=*p++; + num->c=coord_get(&p); + num->first=get_triple(&p); + num->last=get_triple(&p); + num->segment=(struct street_name_segment *)p; + inf->tmp_data+=num->len; + inf->tmp_len-=num->len; + + return 1; +} diff --git a/street_name.h b/street_name.h new file mode 100644 index 00000000..b6c178b1 --- /dev/null +++ b/street_name.h @@ -0,0 +1,51 @@ +struct street_name_segment { + int segid; + int country; +}; + +struct street_name { + int len; + int country; + int townassoc; + char *name1; + char *name2; + int segment_count; + struct street_name_segment *segments; + int aux_len; + unsigned char *aux_data; + int tmp_len; + unsigned char *tmp_data; +}; + + +struct street_name_info { + int len; + int tag; + int dist; + int country; + struct coord *c; + int first; + int last; + int segment_count; + struct street_segment *segments; + int aux_len; + unsigned char *aux_data; + int tmp_len; + unsigned char *tmp_data; +}; + +struct street_name_number_info { + int len; + int tag; + struct coord *c; + int first; + int last; + struct street_name_segment *segment; +}; + +void street_name_get_by_id(struct street_name *name, struct map_data *mdat, unsigned long id); +void street_name_get(struct street_name *name, unsigned char **p); +int street_name_search(struct map_data *mdat, int country, int town_assoc, const char *name, int partial, int (*func)(struct street_name *name, void *data), void *data); +int street_name_get_info(struct street_name_info *inf, struct street_name *name); +int street_name_get_number_info(struct street_name_number_info *num, struct street_name_info *inf); + diff --git a/toolbar.h b/toolbar.h new file mode 100644 index 00000000..ce2f18d6 --- /dev/null +++ b/toolbar.h @@ -0,0 +1,3 @@ +struct toolbar { + struct toolbar_gui *gui; +}; @@ -0,0 +1,260 @@ +#include <stdio.h> +#include <string.h> +#include <malloc.h> +#include "display.h" +#include "coord.h" +#include "data_window.h" +#include "map_data.h" +#include "town.h" +#include "data.h" +#include "tree.h" +#include "block.h" +#include "file.h" +#include "draw_info.h" +#include "container.h" +#include "util.h" + +void +town_get(struct town *town, unsigned char **p) +{ + town->id=get_long(p); + town->c=coord_get(p); + town->name=get_string(p); + town->district=get_string(p); + town->postal_code1=get_string(p); + town->order=get_char(p); + town->country=get_short(p); + town->type=get_char(p); + town->unknown2=get_long(p); + town->size=get_char(p); + town->street_assoc=get_long(p); + town->unknown3=get_char(p); + town->postal_code2=get_string(p); + town->unknown4=get_long(p); +} + +void +town_draw_block(struct block_info *blk_inf, unsigned char *start, unsigned char *end, void *data) +{ + unsigned char *p=start; + struct town town; + char *s; + struct point pnt; + struct param_list param[100]; + struct segment seg; + struct draw_info *drw_inf=data; + struct data_window *win=drw_inf->co->data_window[data_window_type_town]; + + seg.blk_inf=*blk_inf; + + p+=4; + while (p < end) { + seg.data[0]=p; + town_get(&town, &p); + if (town.order < drw_inf->limit && transform(drw_inf->co->trans, town.c, &pnt)) { + s=town.name; + if (*town.district) + s=town.district; + display_add(&drw_inf->co->disp[drw_inf->display+town.order], 3, 0, s, 1, &pnt, NULL, &seg, sizeof(seg)); + if (win) + data_window_add(win, param, town_get_param(&seg, param, 100)); + } + } +} + +struct town_search_priv { + int country; + const char *name; + int name_len; + int partial; + int leaf; + int (*func)(struct town *, void *data); + void *data; +}; + +static int +town_tree_process(int version, int leaf, unsigned char **s2, struct map_data *mdat, void *data) +{ + int len, cmp, country; + struct block *blk; + struct town_search_priv *priv_data=data; + struct file *f=mdat->file[file_town_twn]; + struct block_offset *blk_off; + struct town town; + unsigned char *p,*name; + int ret,i,debug=0; + + country=get_short(s2); + name=get_string(s2); + if (debug) { + printf("Country: 0x%x ", country); + printf("Town: '%s' ", name); + } + len=get_long(s2); + + blk_off=(struct block_offset *)(*s2); + *s2+=len*4; + + cmp=priv_data->country-country; + if (! cmp) { + if (leaf == -1) + priv_data->leaf=0; + if (leaf == 1) + priv_data->leaf=1; + + if (debug) { + printf("'%s' vs '%s' version=%d\n", priv_data->name, name, version); + } + if (priv_data->leaf && priv_data->partial) + cmp=strncmp(priv_data->name,name,priv_data->name_len); + else + cmp=strcmp(priv_data->name,name); + } else { + if (debug) { + printf("country mismatch\n"); + } + } + + if (cmp > 0) + return 2; + if (cmp < 0) + return -2; + if (debug) + printf("%s\n", name); + for (i = 0 ; i < len ; i++) { + blk=block_get_byindex(f, blk_off->block, &p); + p=(unsigned char *)blk+blk_off->offset; + town_get(&town, &p); + ret=(*priv_data->func)(&town, priv_data->data); + if (ret) + return 1; + blk_off++; + } + return 0; +} + +int +town_search_by(struct map_data *mdat, char *ext, int country, const char *search, int partial, int (*func)(struct town *, void *data), void *data) +{ + struct town_search_priv priv_data; + priv_data.country=country; + priv_data.name=search; + priv_data.name_len=strlen(search); + priv_data.partial=partial; + priv_data.leaf=0; + priv_data.func=func; + priv_data.data=data; + + tree_search_map(mdat, file_town_twn, ext, town_tree_process, &priv_data); + + return 0; +} + +int +town_search_by_postal_code(struct map_data *mdat, int country, unsigned char *name, int partial, int (*func)(struct town *, void *data), void *data) +{ + unsigned char uname[strlen(name)+1]; + + strtoupper(uname, name); + return town_search_by(mdat, "b1", country, uname, partial, func, data); +} + + +int +town_search_by_name(struct map_data *mdat, int country, const char *name, int partial, int (*func)(struct town *, void *data), void *data) +{ + unsigned char uname[strlen(name)+1]; + + strtolower(uname, (char *)name); + return town_search_by(mdat, "b2", country, uname, partial, func, data); +} + +int +town_search_by_district(struct map_data *mdat, int country, unsigned char *name, int partial, int (*func)(struct town *, void *data), void *data) +{ + unsigned char uname[strlen(name)+1]; + + strtoupper(uname, name); + return town_search_by(mdat, "b3", country, uname, partial, func, data); +} + +int +town_search_by_name_phon(struct map_data *mdat, int country, unsigned char *name, int partial, int (*func)(struct town *, void *data), void *data) +{ + unsigned char uname[strlen(name)+1]; + + strtoupper(uname, name); + return town_search_by(mdat, "b4", country, uname, partial, func, data); +} + +int +town_search_by_district_phon(struct map_data *mdat, int country, unsigned char *name, int partial, int (*func)(struct town *, void *data), void *data) +{ + unsigned char uname[strlen(name)+1]; + + strtoupper(uname, name); + return town_search_by(mdat, "b5", country, uname, partial, func, data); +} + + +void +town_get_by_id(struct town *town, struct map_data *mdat, int country, int id) +{ + struct map_data *mdat_res; + struct file *f; + int res,block,offset; + struct block *blk; + unsigned char *p; + int search1,search2; + unsigned long id2=id; + + if (id < 0) + id=-id; + search2 = id2 & 0xff; + search1 = (id2 >> 8) | (country << 24); + printf("country=0x%x id=0x%lx -id=0x%lx search1=0x%x search2=0x%x\n", country, id2, -id2, search1, search2); + return; + tree_search_hv_map(mdat, file_town_twn, search1, search2, &res, &mdat_res); + printf("res=0x%x\n",res); + block=res >> 16; + offset=res & 0xffff; + f=mdat_res->file[file_town_twn]; + printf("file %s block 0x%x offset 0x%x\n", f->name, block, offset); + blk=block_get_byindex(f, block, &p); + p=(unsigned char *)blk+offset; + printf("addr 0x%x\n", p-f->begin); + town_get(town, &p); +} + +int +town_get_param(struct segment *seg, struct param_list *param, int count) +{ + int i=count; + unsigned char *p; + struct town town; + + p=(unsigned char *)(seg->blk_inf.block); + p+=sizeof(*seg->blk_inf.block); + + param_add_hex("Block Unknown", get_long(&p), ¶m, &count); + p=seg->data[0]; + param_add_hex("Address", p-seg->blk_inf.file->begin, ¶m, &count); + town_get(&town, &p); + param_add_hex("ID", town.id, ¶m, &count); + param_add_hex_sig("X", town.c->x, ¶m, &count); + param_add_hex_sig("Y", town.c->y, ¶m, &count); + param_add_string("Name", town.name, ¶m, &count); + param_add_string("District", town.district, ¶m, &count); + param_add_string("PostalCode1", town.postal_code1, ¶m, &count); + param_add_hex("Order", town.order, ¶m, &count); + param_add_hex("Country", town.country, ¶m, &count); + param_add_hex("Type", town.type, ¶m, &count); + param_add_hex("Unknown2", town.unknown2, ¶m, &count); + param_add_hex("Size", town.size, ¶m, &count); + param_add_hex("StreetAssoc", town.street_assoc, ¶m, &count); + param_add_hex("Unknown3", town.unknown3, ¶m, &count); + param_add_string("PostalCode2", town.postal_code2, ¶m, &count); + param_add_hex("Unknown4", town.unknown4, ¶m, &count); + + return i-count; +} @@ -0,0 +1,27 @@ +struct town { + unsigned long id; + struct coord *c; + char *name; + char *district; + char *postal_code1; + unsigned char order; + unsigned char type; + unsigned short country; + unsigned long unknown2; + unsigned char size; + unsigned long street_assoc; + unsigned char unknown3; + char *postal_code2; + unsigned long unknown4; +}; + +struct block_info; +struct segment; +struct container; +struct param_list; +struct map_data; + +void town_draw_block(struct block_info *blk_inf, unsigned char *start, unsigned char *end, void *data); +int town_get_param(struct segment *seg, struct param_list *param, int count); +int town_search_by_name(struct map_data *mdat, int country, const char *name, int partial, int (*func)(struct town *t, void *data), void *data); +void town_get_by_id(struct town *town, struct map_data *mdat, int country, int id); diff --git a/transform.c b/transform.c new file mode 100644 index 00000000..a0f6fe6a --- /dev/null +++ b/transform.c @@ -0,0 +1,363 @@ +#include <assert.h> +#include <stdio.h> +#include <math.h> +#include <limits.h> +#include "coord.h" +#include "transform.h" + +int +transform(struct transformation *t, struct coord *c, struct point *p) +{ + double xc,yc; + int ret=0; + xc=c->x; + yc=c->y; + if (xc >= t->rect[0].x && xc <= t->rect[1].x && yc >= t->rect[1].y && yc <= t->rect[0].y) + ret=1; + xc-=t->center.x; + yc-=t->center.y; + yc=-yc; + if (t->angle) { + int xcn, ycn; + xcn=xc*t->cos_val+yc*t->sin_val; + ycn=-xc*t->sin_val+yc*t->cos_val; + xc=xcn; + yc=ycn; + } + xc=xc*16.0/(double)(t->scale); + yc=yc*16.0/(double)(t->scale); +#if 0 + { + double zc=yc; + if (zc < 10 && zc > 10) + zc=10; + return 0; + yc=300; + xc/=(-zc+1000.0)/1000.0; + yc/=(-zc+1000.0)/1000.0; + xc+=t->width/2; + } +#else + yc+=t->height/2; + xc+=t->width/2; +#endif + if (xc < -0x8000) + xc=-0x8000; + if (xc > 0x7fff) { + xc=0x7fff; + } + if (yc < -0x8000) + yc=-0x8000; + if (yc > 0x7fff) + yc=0x7fff; + p->x=xc; + p->y=yc; + return ret; +} + +void +transform_reverse(struct transformation *t, struct point *p, struct coord *c) +{ + int xc,yc; + xc=p->x; + yc=p->y; + xc-=t->width/2; + yc-=t->height/2; + xc=xc*t->scale/16; + yc=-yc*t->scale/16; + if (t->angle) { + int xcn, ycn; + xcn=xc*t->cos_val+yc*t->sin_val; + ycn=-xc*t->sin_val+yc*t->cos_val; + xc=xcn; + yc=ycn; + } + c->x=t->center.x+xc; + c->y=t->center.y+yc; +} + + +static int +min4(int v1,int v2, int v3, int v4) +{ + int res=v1; + if (v2 < res) + res=v2; + if (v3 < res) + res=v3; + if (v4 < res) + res=v4; + return res; +} + +static int +max4(int v1,int v2, int v3, int v4) +{ + int res=v1; + if (v2 > res) + res=v2; + if (v3 > res) + res=v3; + if (v4 > res) + res=v4; + return res; +} + +void +transform_set_angle(struct transformation *t,int angle) +{ + t->angle=angle; + t->cos_val=cos(M_PI*t->angle/180); + t->sin_val=sin(M_PI*t->angle/180); +} + +void +transform_setup(struct transformation *t, int x, int y, int scale, int angle) +{ + t->center.x=x; + t->center.y=y; + t->scale=scale; + transform_set_angle(t, angle); +} + +void +transform_setup_source_rect_limit(struct transformation *t, struct coord *center, int limit) +{ + t->center=*center; + t->scale=1; + t->angle=0; + t->rect[0].x=center->x-limit; + t->rect[1].x=center->x+limit; + t->rect[1].y=center->y-limit; + t->rect[0].y=center->y+limit; +} + +void +transform_setup_source_rect(struct transformation *t) +{ + int i; + struct coord screen[4]; + struct point screen_pnt[4]; + + screen_pnt[0].x=0; + screen_pnt[0].y=0; + screen_pnt[1].x=t->width; + screen_pnt[1].y=0; + screen_pnt[2].x=0; + screen_pnt[2].y=t->height; + screen_pnt[3].x=t->width; + screen_pnt[3].y=t->height; + for (i = 0 ; i < 4 ; i++) { + transform_reverse(t, &screen_pnt[i], &screen[i]); + } + t->rect[0].x=min4(screen[0].x,screen[1].x,screen[2].x,screen[3].x); + t->rect[1].x=max4(screen[0].x,screen[1].x,screen[2].x,screen[3].x); + t->rect[1].y=min4(screen[0].y,screen[1].y,screen[2].y,screen[3].y); + t->rect[0].y=max4(screen[0].y,screen[1].y,screen[2].y,screen[3].y); +} + +int +transform_get_scale(struct transformation *t) +{ + return t->scale/16; +} + +void +transform_lng_lat(struct coord *c, struct coord_geo *g) +{ + g->lng=c->x/6371000.0/M_PI*180; + g->lat=atan(exp(c->y/6371000.0))/M_PI*360-90; +#if 0 + printf("y=%d vs %f\n", c->y, log(tan(M_PI_4+*lat*M_PI/360))*6371020.0); +#endif +} + +void +transform_geo_text(struct coord_geo *g, char *buffer) +{ + double lng=g->lng; + double lat=g->lat; + char lng_c='E'; + char lat_c='N'; + + if (lng < 0) { + lng=-lng; + lng_c='W'; + } + if (lat < 0) { + lat=-lat; + lat_c='S'; + } + + sprintf(buffer,"%02.0f%07.4f%c %03.0f%07.4f%c", floor(lat), fmod(lat*60,60), lat_c, floor(lng), fmod(lng*60,60), lng_c); + +} + +void +transform_mercator(double *lng, double *lat, struct coord *c) +{ + c->x=*lng*6371000.0*M_PI/180; + c->y=log(tan(M_PI_4+*lat*M_PI/360))*6371000.0; +} + +double +transform_scale(int y) +{ + struct coord c; + struct coord_geo g; + c.x=0; + c.y=y; + transform_lng_lat(&c, &g); + return 1/cos(g.lat/180*M_PI); +} + +double +transform_distance(struct coord *c1, struct coord *c2) +{ + double dx,dy,scale=transform_scale((c1->y+c2->y)/2); + dx=c1->x-c2->x; + dy=c1->y-c2->y; + return sqrt(dx*dx+dy*dy)/scale; +} + +int +transform_distance_sq(struct coord *c1, struct coord *c2) +{ + int dx=c1->x-c2->x; + int dy=c1->y-c2->y; + + if (dx > 32767 || dy > 32767 || dx < -32767 || dy < -32767) + return INT_MAX; + else + return dx*dx+dy*dy; +} + +int +transform_distance_line_sq(struct coord *l0, struct coord *l1, struct coord *ref, struct coord *lpnt) +{ + int vx,vy,wx,wy; + int c1,c2; + struct coord l; + + vx=l1->x-l0->x; + vy=l1->y-l0->y; + wx=ref->x-l0->x; + wy=ref->y-l0->y; + + c1=vx*wx+vy*wy; + if ( c1 <= 0 ) { + if (lpnt) + *lpnt=*l0; + return transform_distance_sq(l0, ref); + } + c2=vx*vx+vy*vy; + if ( c2 <= c1 ) { + if (lpnt) + *lpnt=*l1; + return transform_distance_sq(l1, ref); + } + + l.x=l0->x+vx*c1/c2; + l.y=l0->y+vy*c1/c2; + if (lpnt) + *lpnt=l; + return transform_distance_sq(&l, ref); +} + + +void +transform_print_deg(double deg) +{ + printf("%2.0f:%2.0f:%2.4f", floor(deg), fmod(deg*60,60), fmod(deg*3600,60)); +} + +int +is_visible(struct transformation *t, struct coord *c) +{ + struct coord *r=t->rect; + + assert(c[0].x <= c[1].x); + assert(c[0].y >= c[1].y); + assert(r[0].x <= r[1].x); + assert(r[0].y >= r[1].y); + if (c[0].x > r[1].x) + return 0; + if (c[1].x < r[0].x) + return 0; + if (c[0].y < r[1].y) + return 0; + if (c[1].y > r[0].y) + return 0; + return 1; +} + +int +is_point_visible(struct transformation *t, struct coord *c) +{ + struct coord *r=t->rect; + + assert(r[0].x <= r[1].x); + assert(r[0].y >= r[1].y); + if (c->x > r[1].x) + return 0; + if (c->x < r[0].x) + return 0; + if (c->y < r[1].y) + return 0; + if (c->y > r[0].y) + return 0; + return 1; +} + + +int +is_too_small(struct transformation *t, struct coord *c, int limit) +{ + return 0; + if ((c[1].x-c[0].x) < limit*t->scale/16) { + return 1; + } + if ((c[0].y-c[1].y) < limit*t->scale/16) { + return 1; + } + return 0; +} + +/* +Note: there are many mathematically equivalent ways to express these formulas. As usual, not all of them are computationally equivalent. + +L = latitude in radians (positive north) +Lo = longitude in radians (positive east) +E = easting (meters) +N = northing (meters) + +For the sphere + +E = r Lo +N = r ln [ tan (pi/4 + L/2) ] + +where + +r = radius of the sphere (meters) +ln() is the natural logarithm + +For the ellipsoid + +E = a Lo +N = a * ln ( tan (pi/4 + L/2) * ( (1 - e * sin (L)) / (1 + e * sin (L))) ** (e/2) ) + + + e + - + pi L 1 - e sin(L) 2 + = a ln( tan( ---- + ---) (--------------) ) + 4 2 1 + e sin(L) + + +where + +a = the length of the semi-major axis of the ellipsoid (meters) +e = the first eccentricity of the ellipsoid + + +*/ diff --git a/transform.h b/transform.h new file mode 100644 index 00000000..fe0a0f23 --- /dev/null +++ b/transform.h @@ -0,0 +1,37 @@ +#ifndef TRANSFORM_H +#define TRANSFORM_H + +#include "point.h" + +struct transformation { + int width; /* Height of destination rectangle */ + int height; /* Width of destination rectangle */ + long scale; /* Scale factor */ + int angle; /* Rotation angle */ + double cos_val,sin_val; /* cos and sin of rotation angle */ + struct coord rect[2]; /* Source rectangle */ + struct coord center; /* Center of source rectangle */ +}; + +int transform(struct transformation *t, struct coord *c, struct point *p); +int is_visible(struct transformation *t, struct coord *c); +int is_too_small(struct transformation *t, struct coord *c, int limit); +void transform_lng_lat(struct coord *c, struct coord_geo *g); +void transform_reverse(struct transformation *t, struct point *p, struct coord *c); +void transform_print_deg(double deg); +double transform_scale(int y); +double transform_distance(struct coord *c1, struct coord *c2); +int transform_distance_sq(struct coord *c1, struct coord *c2); +int transform_distance_line_sq(struct coord *l0, struct coord *l1, struct coord *ref, struct coord *lpnt); + +void transform_mercator(double *lng, double *lat, struct coord *c); +int is_point_visible(struct transformation *t, struct coord *c); +int transform_get_scale(struct transformation *t); +void transform_setup_source_rect(struct transformation *t); +void transform_set_angle(struct transformation *t,int angle); +void transform_setup(struct transformation *t, int x, int y, int scale, int angle); +void transform_setup_source_rect_limit(struct transformation *t, struct coord *center, int limit); +void transform_geo_text(struct coord_geo *g, char *buffer); + + +#endif @@ -0,0 +1,320 @@ +#include <stdio.h> +#include <string.h> +#include "file.h" +#include "map_data.h" +#include "data.h" +#include "tree.h" + +struct tree_hdr { + unsigned int addr; + unsigned int size; + unsigned int low; +}; + +struct tree_hdr_h { + unsigned int addr; + unsigned int size; +}; + +struct tree_leaf_h { + unsigned int lower; + unsigned int higher; + unsigned int match; + unsigned int value; +}; + +struct tree_hdr_v { + unsigned int count; + unsigned int next; + unsigned int unknown; +}; + +struct tree_leaf_v { + unsigned char key; + int value; +} __attribute__((packed)); + +int +tree_compare_string(unsigned char *s1, unsigned char **s2_ptr) +{ + unsigned char *s2=*s2_ptr; + char s1_exp, s2_exp; + *s2_ptr+=strlen(s2)+1; + for (;;) { + s1_exp=*s1++; + s2_exp=*s2++; + if (! s1_exp && ! s2_exp) + return 0; + if (s1_exp == 'A' && *s1 == 'E') { s1_exp='Ä'; s1++; } + if (s1_exp == 'O' && *s1 == 'E') { s1_exp='Ö'; s1++; } + if (s1_exp == 'U' && *s1 == 'E') { s1_exp='Ü'; s1++; } + if (s2_exp == 'A' && *s2 == 'E') { s2_exp='Ä'; s2++; } + if (s2_exp == 'O' && *s2 == 'E') { s2_exp='Ö'; s2++; } + if (s2_exp == 'U' && *s2 == 'E') { s2_exp='Ü'; s2++; } + if (s1_exp > s2_exp) + return 2; + if (s1_exp < s2_exp) + return -2; + } +} + +int +tree_compare_string_partial(unsigned char *s1, unsigned char **s2_ptr) +{ + unsigned char *s2=*s2_ptr; + char s1_exp, s2_exp; + *s2_ptr+=strlen(s2)+1; + for (;;) { + s1_exp=*s1++; + s2_exp=*s2++; + if (! s1_exp && ! s2_exp) + return 0; + if (s1_exp == 'A' && *s1 == 'E') { s1_exp='Ä'; s1++; } + if (s1_exp == 'O' && *s1 == 'E') { s1_exp='Ö'; s1++; } + if (s1_exp == 'U' && *s1 == 'E') { s1_exp='Ü'; s1++; } + if (s2_exp == 'A' && *s2 == 'E') { s2_exp='Ä'; s2++; } + if (s2_exp == 'O' && *s2 == 'E') { s2_exp='Ö'; s2++; } + if (s2_exp == 'U' && *s2 == 'E') { s2_exp='Ü'; s2++; } + if (! s1_exp) + return -1; + if (s1_exp > s2_exp) + return 2; + if (s1_exp < s2_exp) + return -2; + } +} + + +int +tree_search_h(struct file *file, unsigned int search) +{ + unsigned char *p=file->begin,*end; + int last,i=0,debug=0; + struct tree_hdr_h *thdr; + struct tree_leaf_h *tleaf; + + if (debug) { + printf("tree_search_h\n"); + } + while (i++ < 1000) { + thdr=(struct tree_hdr_h *)p; + p+=sizeof(*thdr); + end=p+thdr->size; + if (debug) { + printf("@0x%x\n", p-file->begin); + } + last=0; + while (p < end) { + tleaf=(struct tree_leaf_h *)p; + p+=sizeof(*tleaf); + if (debug) { + printf("low:0x%x high:0x%x match:0x%x val:0x%x search:0x%x\n", tleaf->lower, tleaf->higher, tleaf->match, tleaf->value, search); + } + if (tleaf->value == search) + return tleaf->match; + if (tleaf->value > search) { + if (tleaf->lower) + last=tleaf->lower; + break; + } + last=tleaf->higher; + } + if (! last || last == -1) + return 0; + p=file->begin+last; + } + return 0; +} + +int +tree_search_v(struct file *file, int offset, int search) +{ + unsigned char *p=file->begin+offset; + int i=0,count,debug=0; + struct tree_hdr_v *thdr; + struct tree_leaf_v *tleaf; + while (i++ < 1000) { + thdr=(struct tree_hdr_v *)p; + p+=sizeof(*thdr); + count=thdr->count; + while (count--) { + tleaf=(struct tree_leaf_v *)p; + p+=sizeof(*tleaf); + if (debug) + printf("tree_search_v: 0x%x 0x%x\n", tleaf->key, search); + if (tleaf->key == search) + return tleaf->value; + } + if (! thdr->next) + break; + p=file->begin+thdr->next; + } + return 0; + +} + +/* return values */ +/* 0=Next */ +/* -2=Too low */ +/* 1=Abort */ +/* 2=Too high */ + +int +tree_search(int version, struct file *file, unsigned char *p, int (*tree_func)(int version, int leaf, unsigned char **, struct map_data *mdat, void *), struct map_data *mdat, void *data, int higher) +{ + unsigned char *end,*psav; + struct tree_hdr *thdr; + int res=1,low; + int high; + int debug=0; + int leaf=0; + int retry=0; + + if (debug) + printf("version %d\n", version); + + thdr=(struct tree_hdr *)p; + p+=sizeof(*thdr); + low=thdr->low; + end=p+thdr->size; + if (debug) + printf("Header: offset 0x%x size %d low 0x%x\n", thdr->addr, thdr->size, thdr->low); + if (higher == -1) + leaf=-1; + if (higher == 1 && low != -1) { + if (debug) + printf("calling first higher tree 0x%x\n",low); + res=tree_search(version,file,low+file->begin,tree_func,mdat,data,1); + if (debug) + printf("returning from first higher tree res=%d\n", res); + } + while (p < end) { + psav=p; + high=get_long(&p); + if (high == -1) + leaf=1; + res=tree_func(version, leaf, &p, mdat, data); + leaf=0; + if (debug) + printf("result: %d high 0x%x\n", res, high); + if (res == 1) + return res; + if (res < 0) { + if (debug) + printf("calling lower tree 0x%x\n",low); + if (low != -1) { + res=tree_search(version,file,low+file->begin,tree_func,mdat,data,0); + if (debug) + printf("returning from lower tree res=%d\n", res); + if (! res && !retry++ ) { + if (debug) + printf("retrying current leaf\n"); + p=psav; + continue; + } + low=-1; + if (res < 0) + break; + } + else + break; + } + retry=0; + if (! res && high != -1) { + if (debug) + printf("high=0x%x\n", high); + if (debug) + printf("calling higher tree 0x%x\n",high); + res=tree_search(version,file,high+file->begin,tree_func,mdat,data,1); + if (debug) + printf("returning from higer tree res=%d\n", res); + low=-1; + } else { + low=high; + } + } + if (low != -1) + res=tree_search(version,file,low+file->begin,tree_func,mdat,data,0); + + return res; +} + +int +tree_search_map(struct map_data *mdat, int map, char *ext, + int (*tree_func)(int, int, unsigned char **, struct map_data *mdat, void *), void *data) + +{ + struct file *f_dat,*f_idx; + char filename[4096]; + int len, version, ret; + unsigned char *p; + int debug=0; + + while (mdat) { + f_dat=mdat->file[map]; + strcpy(filename, f_dat->name); + len=strlen(filename); + strcpy(filename+len-3,ext); + if (debug) + printf("tree_search_map: filename='%s'\n", filename); + f_idx=file_create(filename); + version=1; + p=f_idx->begin; + if (!strncmp(p+4,"RootBlock",9)) { + p+=0x1000; + version=2; + } + ret=tree_search(version, f_idx, p, tree_func, mdat, data, -1); + if (debug) + printf("tree_search_map: ret=%d\n", ret); + file_destroy(f_idx); + if (ret == 1) + return 1; + mdat=mdat->next; + } + return 0; +} + +struct tree_search_hv { + struct map_data *mdat; + struct file *f_idx_h; + struct file *f_idx_v; + struct tree_search_hv *next; +}; + +int +tree_search_hv_map(struct map_data *mdat, int map, unsigned int search1, unsigned int search2, int *result, struct map_data **mdat_result) + +{ + struct file *f_dat,*f_idx_h, *f_idx_v; + char filename[4096]; + int h,len,ret=0; + int debug=0; + + while (mdat && !ret) { + f_dat=mdat->file[map]; + strcpy(filename, f_dat->name); + len=strlen(filename); + strcpy(filename+len-3,"h1"); + f_idx_h=file_create(filename); + strcpy(filename+len-3,"v1"); + f_idx_v=file_create(filename); + h=tree_search_h(f_idx_h, search1); + if (h) { + ret=tree_search_v(f_idx_v, h, search2); + if (ret) { + if (debug) + printf("result 0x%x\n", ret); + *result=ret; + *mdat_result=mdat; + file_destroy(f_idx_v); + file_destroy(f_idx_h); + return 0; + } + } + file_destroy(f_idx_v); + file_destroy(f_idx_h); + mdat=mdat->next; + } + return 1; +} @@ -0,0 +1,13 @@ +struct block_offset { + unsigned short offset; + unsigned short block; +}; + + +int tree_compare_string(unsigned char *s1, unsigned char **s2); +int tree_compare_string_partial(unsigned char *s1, unsigned char **s2); +#if 0 +int tree_search(struct file *file, unsigned char *search, int (*tree_func)(int, unsigned char *, unsigned char **, struct map_data *, void *), struct map_data *mdat, void *data2); +#endif +int tree_search_map(struct map_data *mdat, int map, char *ext, int (*tree_func)(int, int, unsigned char **, struct map_data *, void *), void *data); +int tree_search_hv_map(struct map_data *mdat, int map, unsigned int search1, unsigned int search2, int *result, struct map_data **mdat_result); @@ -0,0 +1,15 @@ +#include <glib/gmacros.h> +#include <glib/gtypes.h> +#include <glib.h> + +int tst(void) +{ + unsigned short t1=20; + unsigned short t2=10; + return t2-t1; +} + +int main(int argc, char **argv) +{ + printf("res=%d\n", tst()); +} @@ -0,0 +1,18 @@ +#include <ctype.h> + +void +strtoupper(unsigned char *dest, unsigned char *src) +{ + while (*src) + *dest++=toupper(*src++); + *dest='\0'; +} + +void +strtolower(unsigned char *dest, unsigned char *src) +{ + while (*src) + *dest++=tolower(*src++); + *dest='\0'; +} + @@ -0,0 +1,4 @@ +#include <ctype.h> + +void strtoupper(unsigned char *dest, unsigned char *src); +void strtolower(unsigned char *dest, unsigned char *src); diff --git a/vehicle.c b/vehicle.c new file mode 100644 index 00000000..80eda88c --- /dev/null +++ b/vehicle.c @@ -0,0 +1,216 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include <math.h> +#include <glib.h> +#include "coord.h" +#include "transform.h" +#include "statusbar.h" +#include "vehicle.h" + +struct vehicle { + GIOChannel *iochan; + int timer_count; + int qual; + int sats; + double lat,lng; + double height; + double dir,speed; + struct coord current_pos; + struct coord_d curr; + struct coord_d delta; + + double speed_last; +}; + +void (*callback_func)(); +void *callback_data; + +int +vehicle_timer(gpointer t) +{ + struct vehicle *this=t; + if (this->timer_count++ < 10) { + this->curr.x+=this->delta.x; + this->curr.y+=this->delta.y; + this->current_pos.x=this->curr.x; + this->current_pos.y=this->curr.y; + if (callback_func) + (*callback_func)(callback_data); + } + return TRUE; +} + +struct coord * +vehicle_pos_get(void *t) +{ + struct vehicle *this=t; + + return &this->current_pos; +} + +double * +vehicle_speed_get(void *t) +{ + struct vehicle *this=t; + + return &this->speed; +} + +double * +vehicle_dir_get(void *t) +{ + struct vehicle *this=t; + + return &this->dir; +} + +void +vehicle_set_position(void *t, struct coord *pos) +{ + struct vehicle *this=t; + + this->current_pos=*pos; + this->curr.x=this->current_pos.x; + this->curr.y=this->current_pos.y; + this->delta.x=0; + this->delta.y=0; + if (callback_func) + (*callback_func)(callback_data); +} + +void +vehicle_parse_gps(struct vehicle *this, char *buffer) +{ + char *p,*item[16]; + double lat,lng,scale,speed; + int i,debug=0; + + if (debug) { + printf("GPS %s\n", buffer); + } + if (!strncmp(buffer,"$GPGGA",6)) { + /* $GPGGA,184424.505,4924.2811,N,01107.8846,E,1,05,2.5,408.6,M,,,,0000*0C + UTC of Fix,Latitude,N/S,Longitude,E/W,Quality,Satelites,HDOP,Altitude,"M" + */ + i=0; + p=buffer; + while (i < 16) { + item[i++]=p; + while (*p && *p != ',') + p++; + if (! *p) break; + *p++='\0'; + } + + sscanf(item[2],"%lf",&lat); + this->lat=floor(lat/100); + lat-=this->lat*100; + this->lat+=lat/60; + + sscanf(item[4],"%lf",&lng); + this->lng=floor(lng/100); + lng-=this->lng*100; + this->lng+=lng/60; + + sscanf(item[6],"%d",&this->qual); + sscanf(item[7],"%d",&this->sats); + sscanf(item[9],"%lf",&this->height); + + transform_mercator(&this->lng, &this->lat, &this->current_pos); + + this->curr.x=this->current_pos.x; + this->curr.y=this->current_pos.y; + this->timer_count=0; + if (callback_func) + (*callback_func)(callback_data); + } + if (!strncmp(buffer,"$GPVTG",6)) { + /* $GPVTG,143.58,T,,M,0.26,N,0.5,K*6A + Course Over Ground Degrees True,"T",Course Over Ground Degrees Magnetic,"M", + Speed in Knots,"N","Speed in KM/H","K",*CHECKSUM */ + + i=0; + p=buffer; + while (i < 16) { + item[i++]=p; + while (*p && *p != ',') + p++; + if (! *p) break; + *p++='\0'; + } + sscanf(item[1],"%lf",&this->dir); + sscanf(item[7],"%lf",&this->speed); + + scale=transform_scale(this->current_pos.y); + speed=this->speed+(this->speed-this->speed_last)/2; + this->delta.x=sin(M_PI*this->dir/180)*speed*scale/36; + this->delta.y=cos(M_PI*this->dir/180)*speed*scale/36; + this->speed_last=this->speed; + } +} + +gboolean +vehicle_track(GIOChannel *iochan, GIOCondition condition, gpointer t) +{ + struct vehicle *this=t; + GError *error=NULL; + char buffer[4096]; + char *str,*tok; + int size; + + if (condition == G_IO_IN) { + g_io_channel_read_chars(iochan, buffer, 4096, &size, &error); + buffer[size]='\0'; + str=buffer; + while ((tok=strtok(str, "\n"))) { + str=NULL; + vehicle_parse_gps(this, tok); + } + return TRUE; + } + return FALSE; +} + +void * +vehicle_new(char *file) +{ + struct vehicle *this; + GError *error=NULL; + int fd; + + this=g_new(struct vehicle,1); + fd=open(file,O_RDONLY|O_NDELAY); + this->iochan=g_io_channel_unix_new(fd); + g_io_channel_set_encoding(this->iochan, NULL, &error); + g_io_add_watch(this->iochan, G_IO_IN|G_IO_ERR|G_IO_HUP, vehicle_track, this); +#if 0 + g_timeout_add(100, vehicle_timer, this); +#endif + this->current_pos.x=0x130000; + this->current_pos.y=0x600000; + + return this; +} + +void +vehicle_callback(void (*func)(), void *data) +{ + callback_func=func; + callback_data=data; +} + +int +vehicle_destroy(void *t) +{ + struct vehicle *this=t; + GError *error=NULL; + + + g_io_channel_shutdown(this->iochan,0,&error); + g_free(this); + + return 0; +} diff --git a/vehicle.h b/vehicle.h new file mode 100644 index 00000000..10101c24 --- /dev/null +++ b/vehicle.h @@ -0,0 +1,6 @@ +struct coord *vehicle_pos_get(void *); +double *vehicle_dir_get(void *); +double *vehicle_speed_get(void *); +void vehicle_callback(void (*func)(),void *data); +void vehicle_set_position(void *, struct coord *); +void *vehicle_new(char *file); |