X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/50a14534a51f892500ee82f867e8ab2f85b936ae..6a4a29aa76af1b8ed8695cf8ed16c186b571d9e1:/src/expedia.c?ds=sidebyside diff --git a/src/expedia.c b/src/expedia.c index 1d3b1c2e..9b996658 100644 --- a/src/expedia.c +++ b/src/expedia.c @@ -21,15 +21,35 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include #include +#ifdef HAVE_MATH_H #include +#endif + #include "globals.h" #include "coords.h" #include "vikcoord.h" #include "mapcoord.h" -#include "http.h" +#include "download.h" +#include "vikmapslayer.h" + +#include "expedia.h" +static gboolean expedia_coord_to_mapcoord ( const VikCoord *src, gdouble xzoom, gdouble yzoom, MapCoord *dest ); +static void expedia_mapcoord_to_center_coord ( MapCoord *src, VikCoord *dest ); +static int expedia_download ( MapCoord *src, const gchar *dest_fn ); + +static DownloadOptions expedia_options = { FALSE, NULL, 2, a_check_map_file }; + +void expedia_init() { + VikMapsLayer_MapType map_type = { 5, 0, 0, VIK_VIEWPORT_DRAWMODE_EXPEDIA, expedia_coord_to_mapcoord, expedia_mapcoord_to_center_coord, expedia_download, &expedia_options }; + maps_layer_register_type(_("Expedia Street Maps"), 5, &map_type); +} #define EXPEDIA_SITE "expedia.com" #define MPP_MARGIN_OF_ERROR 0.01 @@ -56,7 +76,7 @@ gdouble expedia_altis_freq ( gint alti ) if ( expedia_altis[i] == alti ) return expedia_altis_degree_freq [ i ]; - g_error ( "Invalid expedia altitude" ); + g_error ( _("Invalid expedia altitude") ); return 0; } @@ -87,7 +107,7 @@ void expedia_snip ( const gchar *file ) old = gdk_pixbuf_new_from_file ( file, &gx ); if (gx) { - g_warning ( "Couldn't open EXPEDIA image file (right after successful download! Please report and delete image file!): %s", gx->message ); + g_warning ( _("Couldn't open EXPEDIA image file (right after successful download! Please report and delete image file!): %s"), gx->message ); g_error_free ( gx ); return; } @@ -98,9 +118,9 @@ void expedia_snip ( const gchar *file ) cropped = gdk_pixbuf_new_subpixbuf ( old, WIDTH_BUFFER, HEIGHT_BUFFER, width - 2*WIDTH_BUFFER, height - 2*HEIGHT_BUFFER ); - gdk_pixbuf_save ( cropped, file, "png", NULL, NULL, &gx ); + gdk_pixbuf_save ( cropped, file, "png", &gx, NULL ); if ( gx ) { - g_warning ( "Couldn't save EXPEDIA image file (right after successful download! Please report and delete image file!): %s", gx->message ); + g_warning ( _("Couldn't save EXPEDIA image file (right after successful download! Please report and delete image file!): %s"), gx->message ); g_error_free ( gx ); } @@ -110,7 +130,7 @@ void expedia_snip ( const gchar *file ) /* if degree_freeq = 60 -> nearest minute (in middle) */ /* everything starts at -90,-180 -> 0,0. then increments by (1/degree_freq) */ -gboolean expedia_coord_to_mapcoord ( const VikCoord *src, gdouble xzoom, gdouble yzoom, MapCoord *dest ) +static gboolean expedia_coord_to_mapcoord ( const VikCoord *src, gdouble xzoom, gdouble yzoom, MapCoord *dest ) { gint alti; @@ -140,18 +160,19 @@ void expedia_xy_to_latlon_middle ( gint alti, gint x, gint y, struct LatLon *ll ll->lat = (((gdouble)y) / expedia_altis_freq(alti)) - 90; } -void expedia_mapcoord_to_center_coord ( MapCoord *src, VikCoord *dest ) +static void expedia_mapcoord_to_center_coord ( MapCoord *src, VikCoord *dest ) { dest->mode = VIK_COORD_LATLON; dest->east_west = (((gdouble)src->x) / expedia_altis_freq(src->scale)) - 180; dest->north_south = (((gdouble)src->y) / expedia_altis_freq(src->scale)) - 90; } -void expedia_download ( MapCoord *src, const gchar *dest_fn ) +static int expedia_download ( MapCoord *src, const gchar *dest_fn ) { gint height, width; struct LatLon ll; gchar *uri; + int res = -1; expedia_xy_to_latlon_middle ( src->scale, src->x, src->y, &ll ); @@ -164,9 +185,9 @@ void expedia_download ( MapCoord *src, const gchar *dest_fn ) uri = g_strdup_printf ( "/pub/agent.dll?qscr=mrdt&ID=3XNsF.&CenP=%lf,%lf&Lang=%s&Alti=%d&Size=%d,%d&Offs=0.000000,0.000000&BCheck&tpid=1", ll.lat, ll.lon, (ll.lon > -30) ? "EUR0809" : "USA0409", src->scale, width, height ); - a_http_download_get_url_nohostname ( "expedia.com", uri, dest_fn ); - - expedia_snip ( dest_fn ); + if ((res = a_http_download_get_url ( EXPEDIA_SITE, uri, dest_fn, &expedia_options )) == 0) /* All OK */ + expedia_snip ( dest_fn ); + g_free(uri); + return(res); } -