static gdouble __mapzooms_x[] = { 0.0, 0.25, 1.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0, 128.0, 256.0, 512.0, 1024.0, 1.016, 2.4384, 2.54, 5.08, 10.16, 20.32, 25.4 };
static gdouble __mapzooms_y[] = { 0.0, 0.25, 1.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0, 128.0, 256.0, 512.0, 1024.0, 1.016, 2.4384, 2.54, 5.08, 10.16, 20.32, 25.4 };
-static gchar *params_maptypes[] = { "Terraserver Topos", "Terraserver Aerials", "Terraserver Urban Areas", "Expedia (Street Maps)", "Google Maps (Street)", "KH Maps", "New (Mercator) Google", "Transparent Google", "New (Mercator) KH" };
+static gchar *params_maptypes[] = { "Terraserver Topos", "Terraserver Aerials", "Terraserver Urban Areas", "Expedia Street Maps", "Old Google Maps", "Old KH Satellite Images", "Google Maps", "Transparent Google Maps", "Google Satellite Images" };
static guint params_maptypes_ids[] = { 2, 1, 4, 5, 9, 8, 7, 10, 11 };
#define NUM_MAPZOOMS (sizeof(params_mapzooms)/sizeof(params_mapzooms[0]))
static VikMapsLayer *maps_layer_copy ( VikMapsLayer *vml, VikViewport *vvp );
+static void maps_layer_marshall( VikMapsLayer *vml, guint8 **data, gint *len );
+static VikMapsLayer *maps_layer_unmarshall( guint8 *data, gint len, VikViewport *vvp );
static gboolean maps_layer_set_param ( VikMapsLayer *vml, guint16 id, VikLayerParamData data, VikViewport *vvp );
static VikLayerParamData maps_layer_get_param ( VikMapsLayer *vml, guint16 id );
static void maps_layer_draw ( VikMapsLayer *vml, VikViewport *vvp );
static void maps_layer_free ( VikMapsLayer *vml );
static gboolean maps_layer_download_release ( VikMapsLayer *vml, GdkEventButton *event, VikViewport *vvp );
static gboolean maps_layer_download_click ( VikMapsLayer *vml, GdkEventButton *event, VikViewport *vvp );
+static gpointer maps_layer_download_create ( VikWindow *vw, VikViewport *vvp );
static void maps_layer_set_cache_dir ( VikMapsLayer *vml, const gchar *dir );
static void start_download_thread ( VikMapsLayer *vml, VikViewport *vvp, const VikCoord *ul, const VikCoord *br, gint redownload );
static void maps_layer_add_menu_items ( VikMapsLayer *vml, GtkMenu *menu, VikLayersPanel *vlp );
enum { PARAM_MAPTYPE=0, PARAM_CACHE_DIR, PARAM_ALPHA, PARAM_AUTODOWNLOAD, PARAM_MAPZOOM, NUM_PARAMS };
static VikToolInterface maps_tools[] = {
- { "Maps Download", (VikToolInterfaceFunc) maps_layer_download_click, (VikToolInterfaceFunc) maps_layer_download_release },
+ { "Maps Download", (VikToolConstructorFunc) maps_layer_download_create, NULL, NULL, NULL,
+ (VikToolMouseFunc) maps_layer_download_click, NULL, (VikToolMouseFunc) maps_layer_download_release },
};
VikLayerInterface vik_maps_layer_interface = {
(VikLayerFuncSublayerToggleVisible) NULL,
(VikLayerFuncCopy) maps_layer_copy,
+ (VikLayerFuncMarshall) maps_layer_marshall,
+ (VikLayerFuncUnmarshall) maps_layer_unmarshall,
(VikLayerFuncSetParam) maps_layer_set_param,
(VikLayerFuncGetParam) maps_layer_get_param,
(VikLayerFuncReadFileData) NULL,
(VikLayerFuncWriteFileData) NULL,
+ (VikLayerFuncDeleteItem) NULL,
(VikLayerFuncCopyItem) NULL,
(VikLayerFuncPasteItem) NULL,
(VikLayerFuncFreeCopiedItem) NULL,
return rv;
}
+static void maps_layer_marshall( VikMapsLayer *vml, guint8 **data, gint *len )
+{
+ vik_layer_marshall_params ( VIK_LAYER(vml), data, len );
+}
+
+static VikMapsLayer *maps_layer_unmarshall( guint8 *data, gint len, VikViewport *vvp )
+{
+ VikMapsLayer *rv = maps_layer_new ( vvp );
+ vik_layer_unmarshall_params ( VIK_LAYER(rv), data, len, vvp );
+ return rv;
+}
+
/*********************/
/****** DRAWING ******/
/*********************/
static gboolean maps_layer_download_release ( VikMapsLayer *vml, GdkEventButton *event, VikViewport *vvp )
{
-
+ if (!vml || vml->vl.type != VIK_LAYER_MAPS)
+ return FALSE;
if ( vml->dl_tool_x != -1 && vml->dl_tool_y != -1 )
{
if ( event->button == 1 )
return FALSE;
}
+static gpointer maps_layer_download_create ( VikWindow *vw, VikViewport *vvp)
+{
+ return vvp;
+}
+
static gboolean maps_layer_download_click ( VikMapsLayer *vml, GdkEventButton *event, VikViewport *vvp )
{
MapCoord tmp;
+ if (!vml || vml->vl.type != VIK_LAYER_MAPS)
+ return FALSE;
if ( __map_types[vml->maptype].drawmode == vik_viewport_get_drawmode ( vvp ) &&
__map_types[vml->maptype].coord_to_mapcoord ( vik_viewport_get_center ( vvp ),
vml->xmapzoom ? vml->xmapzoom : vik_viewport_get_xmpp ( vvp ),