ChamplainMapSourceFactory

## ChamplainMapSourceFactory ChamplainMapSourceFactory — Manages ChamplainMapSource instances |

## Synopsis

    struct              ChamplainMapSourceFactory;
    ChamplainMapSourceFactory * champlain_map_source_factory_dup_default
                                                            (void);
    GSList *            champlain_map_source_factory_dup_list
                                                            (ChamplainMapSourceFactory *factory);
    ChamplainMapSource * champlain_map_source_factory_create
                                                            (ChamplainMapSourceFactory *factory,
                                                             const gchar *id);
    ChamplainMapSource * champlain_map_source_factory_create_cached_source
                                                            (ChamplainMapSourceFactory *factory,
                                                             const gchar *id);
    ChamplainMapSource * champlain_map_source_factory_create_error_source
                                                            (ChamplainMapSourceFactory *factory,
                                                             guint tile_size);
    gboolean            champlain_map_source_factory_register
                                                            (ChamplainMapSourceFactory *factory,
                                                             ChamplainMapSourceDesc *desc,
                                                             ChamplainMapSourceConstructor constructor,
                                                             gpointer data);
    #define             CHAMPLAIN_MAP_SOURCE_OSM_MAPNIK
    #define             CHAMPLAIN_MAP_SOURCE_OSM_OSMARENDER
    #define             CHAMPLAIN_MAP_SOURCE_OSM_MAPQUEST
    #define             CHAMPLAIN_MAP_SOURCE_OSM_CYCLE_MAP
    #define             CHAMPLAIN_MAP_SOURCE_OSM_TRANSPORT_MAP
    #define             CHAMPLAIN_MAP_SOURCE_OAM
    #define             CHAMPLAIN_MAP_SOURCE_MFF_RELIEF
    #define             CHAMPLAIN_MAP_SOURCE_MEMPHIS_LOCAL
    #define             CHAMPLAIN_MAP_SOURCE_MEMPHIS_NETWORK

## Object Hierarchy

      GObject
       +----ChamplainMapSourceFactory

## Description

This factory manages the create of ChamplainMapSource. It contains names and constructor functions for each available map sources in libchamplain. You can add your own with champlain_map_source_factory_register.

To get the wanted map source, use champlain_map_source_factory_create. It will return a ready to use ChamplainMapSource.

To get the list of registered map sources, use champlain_map_source_factory_dup_list.

## Details

### struct ChamplainMapSourceFactory

    struct ChamplainMapSourceFactory;

### champlain_map_source_factory_dup_default ()

    ChamplainMapSourceFactory * champlain_map_source_factory_dup_default
                                                            (void);

A method to obtain the singleton object.

Returns : | the singleton ChamplainMapSourceFactory, it should be freed using g_object_unref when not needed. [transfer full]

Since 0.4

### champlain_map_source_factory_dup_list ()

    GSList *            champlain_map_source_factory_dup_list
                                                            (ChamplainMapSourceFactory *factory);

Get the list of registered map sources.

`factory` : | the Factory
Returns : | the list of registered map sources, the items should not be freed, the list should be freed with g_slist_free. [transfer container][element-type ChamplainMapSourceDesc]

Since 0.4

### champlain_map_source_factory_create ()

    ChamplainMapSource * champlain_map_source_factory_create
                                                            (ChamplainMapSourceFactory *factory,
                                                             const gchar *id);

The id should not contain any character that can't be in a filename as it will be used as the cache directory name for that map source.

`factory` : | the Factory
`id` : | the wanted map source id
Returns : | a ready to use ChamplainMapSource matching the given name, returns NULL is none match. [transfer full]

Since 0.4

### champlain_map_source_factory_create_cached_source ()

    ChamplainMapSource * champlain_map_source_factory_create_cached_source
                                                            (ChamplainMapSourceFactory *factory,
                                                             const gchar *id);

Creates a cached map source.

`factory` : | the Factory
`id` : | the wanted map source id
Returns : | a ready to use ChamplainMapSourceChain consisting of ChamplainMemoryCache, ChamplainFileCache, ChamplainMapSource matching the given name, and an error tile source created with `champlain_map_source_factory_create_error_source()`. [transfer full]

Since 0.6

### champlain_map_source_factory_create_error_source ()

    ChamplainMapSource * champlain_map_source_factory_create_error_source
                                                            (ChamplainMapSourceFactory *factory,
                                                             guint tile_size);

Creates a map source generating error tiles.

`factory` : | the Factory
`tile_size` : | the size of the error tile
Returns : | a ready to use map source generating error tiles. [transfer full]

Since 0.8

### champlain_map_source_factory_register ()

    gboolean            champlain_map_source_factory_register
                                                            (ChamplainMapSourceFactory *factory,
                                                             ChamplainMapSourceDesc *desc,
                                                             ChamplainMapSourceConstructor constructor,
                                                             gpointer data);

Registers the new map source with the given constructor. When this map source is requested, the given constructor will be used to build the map source. ChamplainMapSourceFactory will take ownership of the passed ChamplainMapSourceDesc, so don't free it. They will not be freed either so you can use static structs here.

`factory` : | A ChamplainMapSourceFactory
`desc` : | the description of the map source
`constructor` : | the new map source constructor function. [scope notified]
`data` : | data to be passed to the constructor function, or NULL
Returns : | TRUE if the registration suceeded.

Since 0.4

### CHAMPLAIN_MAP_SOURCE_OSM_MAPNIK

    #define CHAMPLAIN_MAP_SOURCE_OSM_MAPNIK "osm-mapnik"

OpenStreetMap Mapnik

### CHAMPLAIN_MAP_SOURCE_OSM_OSMARENDER

    #define CHAMPLAIN_MAP_SOURCE_OSM_OSMARENDER "osm-osmarender"

OpenStreetMap Osmarender

### CHAMPLAIN_MAP_SOURCE_OSM_MAPQUEST

    #define CHAMPLAIN_MAP_SOURCE_OSM_MAPQUEST "osm-mapquest"

Mapquest OpenStreetMap

### CHAMPLAIN_MAP_SOURCE_OSM_CYCLE_MAP

    #define CHAMPLAIN_MAP_SOURCE_OSM_CYCLE_MAP "osm-cyclemap"

OpenStreetMap Cycle Map

### CHAMPLAIN_MAP_SOURCE_OSM_TRANSPORT_MAP

    #define CHAMPLAIN_MAP_SOURCE_OSM_TRANSPORT_MAP "osm-transportmap"

OpenStreetMap Transport Map

### CHAMPLAIN_MAP_SOURCE_OAM

    #define CHAMPLAIN_MAP_SOURCE_OAM "OpenAerialMap"

OpenAerialMap

### CHAMPLAIN_MAP_SOURCE_MFF_RELIEF

    #define CHAMPLAIN_MAP_SOURCE_MFF_RELIEF "mff-relief"

Maps for Free Relief

### CHAMPLAIN_MAP_SOURCE_MEMPHIS_LOCAL

    #define CHAMPLAIN_MAP_SOURCE_MEMPHIS_LOCAL "memphis-local"

OpenStreetMap Memphis Local Map

### CHAMPLAIN_MAP_SOURCE_MEMPHIS_NETWORK

    #define CHAMPLAIN_MAP_SOURCE_MEMPHIS_NETWORK "memphis-network"

OpenStreetMap Memphis Network Map