[libchamplain] Add MemphisMapSource with NetworkMapDataSource to the map factory



commit 628614acc5566f24c008ffe52b004352e6b3ba51
Author: Simon Wenner <simon wenner ch>
Date:   Tue Jun 30 16:47:01 2009 +0200

    Add MemphisMapSource with NetworkMapDataSource to the map factory

 champlain/champlain-map-source-factory.c |   37 ++++++++++++++++++++++++-----
 champlain/champlain-map-source-factory.h |    1 +
 2 files changed, 31 insertions(+), 7 deletions(-)
---
diff --git a/champlain/champlain-map-source-factory.c b/champlain/champlain-map-source-factory.c
index a0c5cbb..0b6e342 100644
--- a/champlain/champlain-map-source-factory.c
+++ b/champlain/champlain-map-source-factory.c
@@ -267,6 +267,21 @@ ChamplainMapSourceDesc MEMPHIS_LOCAL_DESC =
     "",
     NULL
   };
+
+static
+ChamplainMapSourceDesc MEMPHIS_NETWORK_DESC =
+  {
+    CHAMPLAIN_MAP_SOURCE_MEMPHIS_NETWORK,
+    "OpenStreetMap Memphis Network Map",
+    "(CC) BY 2.0 OpenStreetMap contributors",
+    "http://creativecommons.org/licenses/by/2.0/";,
+    12,
+    18,
+    CHAMPLAIN_MAP_PROJECTION_MERCATOR,
+    champlain_map_source_new_memphis,
+    "",
+    NULL
+  };
 #endif
 
 static void
@@ -295,6 +310,8 @@ champlain_map_source_factory_init (ChamplainMapSourceFactory *factory)
 #ifdef MEMPHIS_ENABLED
   champlain_map_source_factory_register (factory, &MEMPHIS_LOCAL_DESC,
       MEMPHIS_LOCAL_DESC.constructor, MEMPHIS_LOCAL_DESC.data);
+  champlain_map_source_factory_register (factory, &MEMPHIS_NETWORK_DESC,
+      MEMPHIS_NETWORK_DESC.constructor, MEMPHIS_NETWORK_DESC.data);
 #endif
 }
 
@@ -411,16 +428,22 @@ champlain_map_source_new_memphis (ChamplainMapSourceDesc *desc,
   ChamplainMapDataSource *map_data_source;
 
   if (g_strcmp0 (desc->id, CHAMPLAIN_MAP_SOURCE_MEMPHIS_LOCAL) == 0)
-    map_data_source = CHAMPLAIN_MAP_DATA_SOURCE (champlain_local_map_data_source_new ());
+    {
+      map_data_source = CHAMPLAIN_MAP_DATA_SOURCE (champlain_local_map_data_source_new ());
+
+      /* Abuse the uri_format field to store an initial data path (optional) */
+      if (desc->uri_format && g_strcmp0 (desc->uri_format, "") != 0)
+        champlain_local_map_data_source_load_map_data (
+            CHAMPLAIN_LOCAL_MAP_DATA_SOURCE (map_data_source),
+            desc->uri_format);
+    }
+  else if (g_strcmp0 (desc->id, CHAMPLAIN_MAP_SOURCE_MEMPHIS_NETWORK) == 0)
+    {
+      map_data_source = CHAMPLAIN_MAP_DATA_SOURCE (champlain_network_map_data_source_new ());
+    }
   else
     return NULL;
 
-  /* Abuse the uri_format field to store an initial data path (optional) */
-  if (desc->uri_format && g_strcmp0 (desc->uri_format, "") != 0)
-    champlain_local_map_data_source_load_map_data (
-        CHAMPLAIN_LOCAL_MAP_DATA_SOURCE (map_data_source),
-        desc->uri_format);
-
   return CHAMPLAIN_MAP_SOURCE (champlain_memphis_map_source_new_full (
       desc, map_data_source));
 }
diff --git a/champlain/champlain-map-source-factory.h b/champlain/champlain-map-source-factory.h
index dca6681..b98e9df 100644
--- a/champlain/champlain-map-source-factory.h
+++ b/champlain/champlain-map-source-factory.h
@@ -75,6 +75,7 @@ champlain_map_source_factory_register (ChamplainMapSourceFactory *factory,
 #define CHAMPLAIN_MAP_SOURCE_MFF_RELIEF "mff-relief"
 #ifdef MEMPHIS_ENABLED
 #define CHAMPLAIN_MAP_SOURCE_MEMPHIS_LOCAL "memphis-local"
+#define CHAMPLAIN_MAP_SOURCE_MEMPHIS_NETWORK "memphis-network"
 #endif
 
 G_END_DECLS



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]