* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+ /**
+ * SECTION:vikmapsourcedefault
+ * @short_description: the base class implementing most of generic features
+ *
+ * The #VikMapSourceDefault class is the base class implementing most of
+ * generic feature, using properties or reducing complexity of some
+ * functions.
+ */
+
#include "vikmapsourcedefault.h"
#include "vikenumtypes.h"
#include "download.h"
-static const gchar *map_source_get_copyright (VikMapSource *self);
+static void map_source_get_copyright (VikMapSource *self, LatLonBBox bbox, gdouble zoom, void (*fct)(VikViewport*,const gchar*), void *data);
static const gchar *map_source_get_license (VikMapSource *self);
static const gchar *map_source_get_license_url (VikMapSource *self);
+static const GdkPixbuf *map_source_get_logo (VikMapSource *self);
static guint8 map_source_get_uniq_id (VikMapSource *self);
static const gchar *map_source_get_label (VikMapSource *self);
gchar *copyright;
gchar *license;
gchar *license_url;
-
+ GdkPixbuf *logo;
+
guint8 uniq_id;
gchar *label;
guint16 tilesize_x;
PROP_LICENSE_URL,
};
-G_DEFINE_TYPE_EXTENDED (VikMapSourceDefault, vik_map_source_default, VIK_TYPE_MAP_SOURCE, (GTypeFlags)G_TYPE_FLAG_ABSTRACT,);
+G_DEFINE_ABSTRACT_TYPE (VikMapSourceDefault, vik_map_source_default, VIK_TYPE_MAP_SOURCE);
static void
vik_map_source_default_init (VikMapSourceDefault *object)
priv->copyright = NULL;
priv->license = NULL;
priv->license_url = NULL;
+ priv->logo = NULL;
}
static void
priv->license = NULL;
g_free (priv->license_url);
priv->license_url = NULL;
+ g_free (priv->logo);
+ priv->license_url = NULL;
G_OBJECT_CLASS (vik_map_source_default_parent_class)->finalize (object);
}
priv->uniq_id = g_value_get_uint (value);
break;
- case PROP_LABEL:
+ case PROP_LABEL:
g_free (priv->label);
priv->label = g_strdup(g_value_get_string (value));
break;
parent_class->get_copyright = map_source_get_copyright;
parent_class->get_license = map_source_get_license;
parent_class->get_license_url = map_source_get_license_url;
+ parent_class->get_logo = map_source_get_logo;
parent_class->get_uniq_id = map_source_get_uniq_id;
parent_class->get_label = map_source_get_label;
parent_class->get_tilesize_x = map_source_get_tilesize_x;
0 /* minimum value */,
G_MAXUINT16 /* maximum value */,
0 /* default value */,
- G_PARAM_READWRITE);
+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_TILESIZE_X, pspec);
pspec = g_param_spec_uint ("tilesize-y",
0 /* minimum value */,
G_MAXUINT16 /* maximum value */,
0 /* default value */,
- G_PARAM_READWRITE);
+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_TILESIZE_Y, pspec);
pspec = g_param_spec_enum("drawmode",
"Copyright",
"The copyright of the map source",
NULL,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE);
+ G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_COPYRIGHT, pspec);
pspec = g_param_spec_string ("license",
object_class->finalize = vik_map_source_default_finalize;
}
-static const gchar *
-map_source_get_copyright (VikMapSource *self)
+static void
+map_source_get_copyright (VikMapSource *self, LatLonBBox bbox, gdouble zoom, void (*fct)(VikViewport*,const gchar*), void *data)
{
- g_return_val_if_fail (VIK_IS_MAP_SOURCE_DEFAULT(self), NULL);
+ /* Just ignore bbox and zoom level */
+ g_return_if_fail (VIK_IS_MAP_SOURCE_DEFAULT(self));
+
+ g_debug ("%s: %g %g %g %g %g", __FUNCTION__,
+ bbox.south, bbox.north, bbox.east, bbox.west,
+ zoom);
VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE(self);
- return priv->copyright;
+ (*fct) (data, priv->copyright);
}
static const gchar *
return priv->license_url;
}
+static const GdkPixbuf *
+map_source_get_logo (VikMapSource *self)
+{
+ g_return_val_if_fail (VIK_IS_MAP_SOURCE_DEFAULT(self), NULL);
+
+ VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE(self);
+
+ return priv->logo;
+}
+
static guint8
map_source_get_uniq_id (VikMapSource *self)
{
static void
_download_handle_cleanup ( VikMapSource *self, void *handle )
{
- return a_download_handle_cleanup ( handle );
+ a_download_handle_cleanup ( handle );
}
gchar *