/******** MAPS LAYER TYPES **************/
/****************************************/
-void maps_layer_register_type ( const char *label, guint id, VikMapsLayer_MapType *map_type )
+void maps_layer_register_type ( const char *label, guint id, VikMapType *map_type )
{
g_assert(label != NULL);
g_assert(map_type != NULL);
params_maptypes_ids = g_list_append(params_maptypes_ids, GUINT_TO_POINTER (id));
/* We have to clone */
- VikMapsLayer_MapType *clone = g_memdup(map_type, sizeof(VikMapsLayer_MapType));
+ VikMapType *clone = VIK_MAP_TYPE(g_object_ref(map_type));
/* Register the clone in the list */
__map_types = g_list_append(__map_types, clone);
#define MAPS_LAYER_NTH_LABEL(n) ((gchar*)g_list_nth_data(params_maptypes, (n)))
#define MAPS_LAYER_NTH_ID(n) ((guint)g_list_nth_data(params_maptypes_ids, (n)))
-#define MAPS_LAYER_NTH_TYPE(n) ((VikMapsLayer_MapType*)g_list_nth_data(__map_types, (n)))
+#define MAPS_LAYER_NTH_TYPE(n) (VIK_MAP_TYPE(g_list_nth_data(__map_types, (n))))
gint vik_maps_layer_get_map_type(VikMapsLayer *vml)
{
* So, we can check if we have to inform the user about inconsistency */
VikViewportDrawMode vp_drawmode;
VikMapsLayer *vml = VIK_MAPS_LAYER(vl);
- VikMapsLayer_MapType *map_type = NULL;
+ VikMapType *map_type = NULL;
vp_drawmode = vik_viewport_get_drawmode ( VIK_VIEWPORT(vp) );
map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
}
/* coord -> ID */
- VikMapsLayer_MapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
- if ( map_type->coord_to_mapcoord ( ul, xzoom, yzoom, &ulm ) &&
- map_type->coord_to_mapcoord ( br, xzoom, yzoom, &brm ) ) {
+ VikMapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
+ if ( vik_map_type_coord_to_mapcoord ( map_type, ul, xzoom, yzoom, &ulm ) &&
+ vik_map_type_coord_to_mapcoord ( map_type, br, xzoom, yzoom, &brm ) ) {
/* loop & draw */
gint x, y;
width = gdk_pixbuf_get_width ( pixbuf );
height = gdk_pixbuf_get_height ( pixbuf );
- map_type->mapcoord_to_center_coord ( &ulm, &coord );
+ vik_map_type_mapcoord_to_center_coord ( map_type, &ulm, &coord );
vik_viewport_coord_to_screen ( vvp, &coord, &xx, &yy );
xx -= (width/2);
yy -= (height/2);
xend = (xinc == 1) ? (xmax+1) : (xmin-1);
yend = (yinc == 1) ? (ymax+1) : (ymin-1);
- map_type->mapcoord_to_center_coord ( &ulm, &coord );
+ vik_map_type_mapcoord_to_center_coord ( map_type, &ulm, &coord );
vik_viewport_coord_to_screen ( vvp, &coord, &xx_tmp, &yy_tmp );
xx = xx_tmp; yy = yy_tmp;
/* above trick so xx,yy doubles. this is so shrinkfactors aren't rounded off
mdi->mapcoord.x = x; mdi->mapcoord.y = y;
if (need_download) {
- if ( MAPS_LAYER_NTH_TYPE(mdi->maptype)->download ( &(mdi->mapcoord), mdi->filename_buf ))
+ if ( vik_map_type_download( MAPS_LAYER_NTH_TYPE(mdi->maptype), &(mdi->mapcoord), mdi->filename_buf ))
continue;
}
gdouble xzoom = vml->xmapzoom ? vml->xmapzoom : vik_viewport_get_xmpp ( vvp );
gdouble yzoom = vml->ymapzoom ? vml->ymapzoom : vik_viewport_get_ympp ( vvp );
MapCoord ulm, brm;
- VikMapsLayer_MapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
- if ( map_type->coord_to_mapcoord ( ul, xzoom, yzoom, &ulm )
- && map_type->coord_to_mapcoord ( br, xzoom, yzoom, &brm ) )
+ VikMapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
+ if ( vik_map_type_coord_to_mapcoord ( map_type, ul, xzoom, yzoom, &ulm )
+ && vik_map_type_coord_to_mapcoord ( map_type, br, xzoom, yzoom, &brm ) )
{
MapDownloadInfo *mdi = g_malloc ( sizeof(MapDownloadInfo) );
gint a, b;
void maps_layer_download_section_without_redraw( VikMapsLayer *vml, VikViewport *vvp, VikCoord *ul, VikCoord *br, gdouble zoom)
{
MapCoord ulm, brm;
- VikMapsLayer_MapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
+ VikMapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
- if (!map_type->coord_to_mapcoord(ul, zoom, zoom, &ulm)
- || !map_type->coord_to_mapcoord(br, zoom, zoom, &brm)) {
+ if (!vik_map_type_coord_to_mapcoord(map_type, ul, zoom, zoom, &ulm)
+ || !vik_map_type_coord_to_mapcoord(map_type, br, zoom, zoom, &brm)) {
g_warning("%s() coord_to_mapcoord() failed", __PRETTY_FUNCTION__);
return;
}
MapCoord tmp;
if (!vml || vml->vl.type != VIK_LAYER_MAPS)
return FALSE;
- VikMapsLayer_MapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
+ VikMapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
if ( map_type->drawmode == vik_viewport_get_drawmode ( vvp ) &&
- map_type->coord_to_mapcoord ( vik_viewport_get_center ( vvp ),
+ vik_map_type_coord_to_mapcoord ( map_type, vik_viewport_get_center ( vvp ),
vml->xmapzoom ? vml->xmapzoom : vik_viewport_get_xmpp ( vvp ),
vml->ymapzoom ? vml->ymapzoom : vik_viewport_get_ympp ( vvp ),
&tmp ) ) {
vik_viewport_screen_to_coord ( vvp, 0, 0, &ul );
vik_viewport_screen_to_coord ( vvp, vik_viewport_get_width(vvp), vik_viewport_get_height(vvp), &br );
- VikMapsLayer_MapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
+ VikMapType *map_type = MAPS_LAYER_NTH_TYPE(vml->maptype);
if ( map_type->drawmode == vp_drawmode &&
- map_type->coord_to_mapcoord ( &ul, xzoom, yzoom, &ulm ) &&
- map_type->coord_to_mapcoord ( &br, xzoom, yzoom, &brm ) )
+ vik_map_type_coord_to_mapcoord ( map_type, &ul, xzoom, yzoom, &ulm ) &&
+ vik_map_type_coord_to_mapcoord ( map_type, &br, xzoom, yzoom, &brm ) )
start_download_thread ( vml, vvp, &ul, &br, redownload );
else if (map_type->drawmode != vp_drawmode) {
const gchar *drawmode_name = vik_viewport_get_drawmode_name (vvp, map_type->drawmode);