public final class OrthogonalizeAction extends JosmAction
Modifier and Type | Class and Description |
---|---|
private static class |
OrthogonalizeAction.Direction |
private static class |
OrthogonalizeAction.EN
Class contains some auxiliary functions
|
private static class |
OrthogonalizeAction.InvalidUserInputException
Exception: unsuited user input
|
private static class |
OrthogonalizeAction.RejectedAngleException
Exception: angle cannot be recognized as 0, 90, 180 or 270 degrees
|
static class |
OrthogonalizeAction.Undo
Undo the previous orthogonalization for certain nodes.
|
private static class |
OrthogonalizeAction.WayData
Class contains everything we need to know about a singe way.
|
JosmAction.LayerChangeAdapter, JosmAction.SelectionChangeAdapter
Modifier and Type | Field and Description |
---|---|
private static java.util.Map<Node,EastNorth> |
rememberMovements
Remember movements, so the user can later undo it for certain nodes
|
private static double |
TOLERANCE1
excepted deviation from an angle of 0, 90, 180, 360 degrees
maximum value: 45 degrees
Current policy is to except just everything, no matter how strange the result would be.
|
private static double |
TOLERANCE2 |
private static java.lang.String |
USAGE |
sc
Constructor and Description |
---|
OrthogonalizeAction()
Constructs a new
OrthogonalizeAction . |
Modifier and Type | Method and Description |
---|---|
void |
actionPerformed(java.awt.event.ActionEvent e) |
private static int |
angleToDirectionChange(double a,
double deltaMax)
Recognize angle to be approximately 0, 90, 180 or 270 degrees.
|
private static java.util.List<java.util.List<OrthogonalizeAction.WayData>> |
buildGroups(java.util.List<OrthogonalizeAction.WayData> wayDataList)
Collect groups of ways with common nodes in order to orthogonalize each group separately.
|
private static void |
extendGroupRec(java.util.List<OrthogonalizeAction.WayData> group,
OrthogonalizeAction.WayData newGroupMember,
java.util.List<OrthogonalizeAction.WayData> remaining) |
private static java.util.Collection<Command> |
orthogonalize(java.util.List<OrthogonalizeAction.WayData> wayDataList,
java.util.List<Node> headingNodes)
Outline:
1.
|
private static double |
standard_angle_0_to_2PI(double a)
Make sure angle (up to 2*Pi) is in interval [ 0, 2*Pi ).
|
private static double |
standard_angle_mPI_to_PI(double a)
Make sure angle (up to 2*Pi) is in interval ( -Pi, Pi ].
|
protected void |
updateEnabledState()
Don't check, if the current selection is suited for orthogonalization.
|
destroy, getCurrentDataSet, getEditLayer, getShortcut, initEnabledState, installAdapters, setTooltip, updateEnabledState
private static final java.lang.String USAGE
private static final double TOLERANCE1
private static final double TOLERANCE2
private static final java.util.Map<Node,EastNorth> rememberMovements
public OrthogonalizeAction()
OrthogonalizeAction
.public void actionPerformed(java.awt.event.ActionEvent e)
private static java.util.List<java.util.List<OrthogonalizeAction.WayData>> buildGroups(java.util.List<OrthogonalizeAction.WayData> wayDataList)
private static void extendGroupRec(java.util.List<OrthogonalizeAction.WayData> group, OrthogonalizeAction.WayData newGroupMember, java.util.List<OrthogonalizeAction.WayData> remaining)
private static java.util.Collection<Command> orthogonalize(java.util.List<OrthogonalizeAction.WayData> wayDataList, java.util.List<Node> headingNodes) throws OrthogonalizeAction.InvalidUserInputException
OrthogonalizeAction.InvalidUserInputException
- if selected ways have an angle different from 90 or 180 degreesprivate static double standard_angle_0_to_2PI(double a)
private static double standard_angle_mPI_to_PI(double a)
private static int angleToDirectionChange(double a, double deltaMax) throws OrthogonalizeAction.RejectedAngleException
OrthogonalizeAction.RejectedAngleException
- in case of invalid angleprotected void updateEnabledState()
updateEnabledState
in class JosmAction
JosmAction.updateEnabledState(Collection)
,
JosmAction.initEnabledState()