/* * Copyright (C) 2007 Steve Ratcliffe * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * * Author: Steve Ratcliffe * Create date: 24-Mar-2007 */ package uk.me.parabola.mkgmap.general; import java.util.List; import uk.me.parabola.imgfmt.app.Area; import uk.me.parabola.imgfmt.app.net.RoadNetwork; import uk.me.parabola.imgfmt.app.trergn.Overview; /** * A source of map data. This base interface is used internally within * the program. * * @author Steve Ratcliffe */ public interface MapDataSource { /** * Get the area that this map covers. * * @return The area the map covers. */ Area getBounds(); /** * Get the list of points that need to be rendered on the map. * * @return A list of {@link MapPoint} objects. */ List<MapPoint> getPoints(); /** * Get the list of lines that need to be rendered to the map. Includes * lines that are part of roads. * * @return A list of {@link MapLine} objects. */ List<MapLine> getLines(); /** * Get the list of shapes that need to be rendered to the map. * * @return A list of {@link MapShape} objects. */ List<MapShape> getShapes(); /** * Get the high level view of the road network. This is used to write * the net and nod sections. Note that information from the net * section is needed to write the RGN section if routing is wanted. * * @return A {@link RoadNetwork} object with all the connections between * roads. If this returns null, then the NET and NOD sections should * not be written. */ RoadNetwork getRoadNetwork(); /** * Get a list of every feature that is used in the map. As features are * created a list is kept of each separate feature that is used. This * goes into the .img file and is important for points and polygons although * it doesn't seem to matter if lines are represented or not on my Legend Cx * anyway. * * @return A list of all the types of point, polygon and polyline that are * used in the map. */ List<Overview> getOverviews(); }