/* * Copyright (C) 2006 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: 18-Dec-2006 */ package uk.me.parabola.mkgmap.general; import uk.me.parabola.imgfmt.app.Coord; import uk.me.parabola.imgfmt.app.net.GeneralRouteRestriction; /** * This interface can be used by map sources to collect the map elements * in their general form. The general form has garmin types, but the full * detail from the input file. * * It consists of all the 'writable' methods on {@link MapDetails}. * * @author Steve Ratcliffe */ public interface MapCollector { /** * Add the given point to the total bounds for the map. * * @param p The coordinates of the point to add. The type here * will change to Node. */ public void addToBounds(Coord p); /** * Add a point to the map. * * @param point The point to add. */ public void addPoint(MapPoint point); /** * Add a line to the map. * * @param line The line information. */ public void addLine(MapLine line); /** * Add the given shape (polygon) to the map. A shape is very similar to * a line but they are separate because they need to be put in different * sections in the output map. * * @param shape The polygon to add. */ public void addShape(MapShape shape); /** * For adding a road. Although a road is a kind of line, it is treated * differently so that we can join up roads that are split into several * segments and to do routing etc. */ public void addRoad(MapRoad road); /** * Add a routing restriction to the map. This is something such as * no left turn. * @param exceptMask For exceptions eg. no-left-turn except for buses. */ public int addRestriction(GeneralRouteRestriction grr); /** * Add a through route to the map. * */ public void addThroughRoute(int junctionNodeId, long roadIdA, long roadIdB); }