Changeset 16115 in josm
- Timestamp:
- 2020-03-12T10:41:12+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
r15182 r16115 591 591 int left = waysToJoin.size(); 592 592 while (left > 0) { 593 Way w = null;594 593 boolean selected = false; 595 594 List<Node> nodes = null; … … 599 598 joined = false; 600 599 for (int i = 0; i < joinArray.length && left != 0; ++i) { 601 if (joinArray[i] != null) { 602 Way c = joinArray[i]; 603 if (c.getNodesCount() == 0) { 604 continue; 605 } 606 if (w == null) { 607 w = c; 608 selected = w.isSelected(); 600 Way c = joinArray[i]; 601 if (c != null && c.getNodesCount() > 0) { 602 if (nodes == null) { 603 // new ring 604 selected = c.isSelected(); 609 605 joinArray[i] = null; 610 606 --left; 607 nodes = new ArrayList<>(c.getNodes()); 608 wayIds.add(c.getUniqueId()); 611 609 } else { 610 int cl = c.getNodesCount() - 1; 611 int nl = nodes.size() - 1; 612 612 int mode = 0; 613 int cl = c.getNodesCount()-1; 614 int nl; 615 if (nodes == null) { 616 nl = w.getNodesCount()-1; 617 if (w.getNode(nl) == c.getNode(0)) { 618 mode = 21; 619 } else if (w.getNode(nl) == c.getNode(cl)) { 620 mode = 22; 621 } else if (w.getNode(0) == c.getNode(0)) { 622 mode = 11; 623 } else if (w.getNode(0) == c.getNode(cl)) { 624 mode = 12; 625 } 626 } else { 627 nl = nodes.size()-1; 628 if (nodes.get(nl) == c.getNode(0)) { 629 mode = 21; 630 } else if (nodes.get(0) == c.getNode(cl)) { 631 mode = 12; 632 } else if (nodes.get(0) == c.getNode(0)) { 633 mode = 11; 634 } else if (nodes.get(nl) == c.getNode(cl)) { 635 mode = 22; 636 } 613 if (nodes.get(nl) == c.getNode(0)) { 614 mode = 21; 615 } else if (nodes.get(0) == c.getNode(cl)) { 616 mode = 12; 617 } else if (nodes.get(0) == c.getNode(0)) { 618 mode = 11; 619 } else if (nodes.get(nl) == c.getNode(cl)) { 620 mode = 22; 637 621 } 638 622 if (mode != 0) { 623 // found a connection 639 624 joinArray[i] = null; 640 625 joined = true; … … 643 628 } 644 629 --left; 645 if (nodes == null) {646 nodes = new ArrayList<>(w.getNodes());647 wayIds.add(w.getUniqueId());648 }649 630 if (mode == 21) { 650 631 nodes.addAll(c.getNodes().subList(1, cl + 1)); … … 667 648 } 668 649 669 if (nodes == null && w != null) {670 nodes = w.getNodes();671 wayIds.add(w.getUniqueId());672 }673 674 650 if (nodes != null) { 675 651 result.add(new JoinedWay(nodes, wayIds, selected));
Note:
See TracChangeset
for help on using the changeset viewer.