Subversion Repositories mkgmap

Rev

Rev 3221 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 * Copyright (C) 2008 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: 13-Jul-2008
 */

package uk.me.parabola.mkgmap.general;

import java.util.List;

import uk.me.parabola.imgfmt.app.lbl.City;
import uk.me.parabola.imgfmt.app.lbl.Zip;
import uk.me.parabola.imgfmt.app.net.Numbers;
import uk.me.parabola.imgfmt.app.net.RoadDef;

/**
 * Used to represent a road.  A road is a special kind of line in that
 * it can be used to route down and can have addresses etc.
 *
 * A road has several coordinates, and some of those coordinates can be
 * routing nodes.
 *
 * A lot of the information is kept in a {@link RoadDef} this is done
 * because it needs to be shared between all sections and all levels
 * of the same road.
 *  
 * @author Steve Ratcliffe
 */

public class MapRoad extends MapLine {

        private final RoadDef roadDef;
        private boolean segmentsFollowing;
       
        public MapRoad(long id, MapLine line) {
                super(line);
                setPoints(line.getPoints());
                roadDef = new RoadDef(id, getName());
        }

        private MapRoad(MapRoad r) {
                super(r);
                roadDef = r.roadDef;
                segmentsFollowing = r.segmentsFollowing;
        }

        public MapRoad copy() {
                return new MapRoad(this);
        }

        public boolean isRoad() {
                return true;
        }

        public void setRoadClass(int roadClass) {
                roadDef.setRoadClass(roadClass);
        }

        public void setSpeed(int speed) {
                roadDef.setSpeed(speed);
        }

        public void setOneway() {
                roadDef.setOneway();
        }

        public void setToll() {
                roadDef.setToll();
        }

        public void paved(boolean p) {
                roadDef.paved(p);
        }

        public void ferry(boolean f) {
                roadDef.ferry(f);
        }

        public void setSynthesised(boolean s) {
                roadDef.setSynthesised(s);
        }

        public void setAccess(byte access) {
                roadDef.setAccess(access);
        }

        public void setCarpoolLane() {
                roadDef.setCarpoolLane();
        }
       
        public void setNoThroughRouting() {
                roadDef.setNoThroughRouting();
        }

        public void setStartsWithNode(boolean s) {
                roadDef.setStartsWithNode(s);
        }

        public void setInternalNodes(boolean s) {
                roadDef.setInternalNodes(s);
        }

        public void setNumNodes(int n) {
                roadDef.setNumNodes(n);
        }

        public void setNumbers(List<Numbers> numbers) {
                roadDef.setNumbersList(numbers);
        }

        public RoadDef getRoadDef() {
                return roadDef;
        }

        public void setRoadCity(City c) {
                roadDef.setCity(c);
        }

        public void setRoadZip(Zip z) {
                roadDef.setZip(z);
        }

        public void setRoundabout(boolean r) {
                roadDef.setRoundabout(r);
        }

        public void doFlareCheck(boolean fc) {
                roadDef.doFlareCheck(fc);
        }

        public void setLinkRoad(boolean lr) {
                roadDef.setLinkRoad(lr);
        }

        public boolean hasSegmentsFollowing() {
                return segmentsFollowing;
        }

        public void setSegmentsFollowing(boolean segmentsFollowing) {
                this.segmentsFollowing = segmentsFollowing;
        }

}