90 lines
2 KiB
Java
90 lines
2 KiB
Java
/**
|
|
* Container for link between two Osm nodes (pre-pocessor version)
|
|
*
|
|
* @author ab
|
|
*/
|
|
package btools.mapcreator;
|
|
|
|
|
|
public class OsmLinkP {
|
|
/**
|
|
* The description bitmap is mainly the way description
|
|
* used to calculate the costfactor
|
|
*/
|
|
public byte[] descriptionBitmap;
|
|
|
|
/**
|
|
* The target is either the next link or the target node
|
|
*/
|
|
protected OsmNodeP sourceNode;
|
|
protected OsmNodeP targetNode;
|
|
|
|
protected OsmLinkP previous;
|
|
protected OsmLinkP next;
|
|
|
|
|
|
public OsmLinkP(OsmNodeP source, OsmNodeP target) {
|
|
sourceNode = source;
|
|
targetNode = target;
|
|
}
|
|
|
|
protected OsmLinkP() {
|
|
}
|
|
|
|
public final boolean counterLinkWritten() {
|
|
return descriptionBitmap == null;
|
|
}
|
|
|
|
/**
|
|
* Set the relevant next-pointer for the given source
|
|
*/
|
|
public void setNext(OsmLinkP link, OsmNodeP source) {
|
|
if (sourceNode == source) {
|
|
next = link;
|
|
} else if (targetNode == source) {
|
|
previous = link;
|
|
} else {
|
|
throw new IllegalArgumentException("internal error: setNext: unknown source");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the relevant next-pointer for the given source
|
|
*/
|
|
public OsmLinkP getNext(OsmNodeP source) {
|
|
if (sourceNode == source) {
|
|
return next;
|
|
} else if (targetNode == source) {
|
|
return previous;
|
|
} else {
|
|
throw new IllegalArgumentException("internal error: gextNext: unknown source");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the relevant target-node for the given source
|
|
*/
|
|
public OsmNodeP getTarget(OsmNodeP source) {
|
|
if (sourceNode == source) {
|
|
return targetNode;
|
|
} else if (targetNode == source) {
|
|
return sourceNode;
|
|
} else {
|
|
throw new IllegalArgumentException("internal error: getTarget: unknown source");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if reverse link for the given source
|
|
*/
|
|
public boolean isReverse(OsmNodeP source) {
|
|
if (sourceNode == source) {
|
|
return false;
|
|
} else if (targetNode == source) {
|
|
return true;
|
|
} else {
|
|
throw new IllegalArgumentException("internal error: isReverse: unknown source");
|
|
}
|
|
}
|
|
|
|
}
|