Changeset 1313 in josm for trunk/src/org/openstreetmap/josm/data/osm/visitor
- Timestamp:
- 2009-01-20T18:26:59+01:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
r1310 r1313 93 93 public ElemStyle getPrimitiveStyle(OsmPrimitive osm) { 94 94 if(!useStyleCache) 95 return (styles != null) ? (IconElemStyle)styles.get(osm) : null;95 return (styles != null) ? styles.get(osm) : null; 96 96 97 97 if(osm.mappaintStyle == null && styles != null) { 98 osm.mappaintStyle = 98 osm.mappaintStyle = styles.get(osm); 99 99 if(osm instanceof Way) 100 100 ((Way)osm).isMappaintArea = styles.isArea(osm); 101 101 } 102 102 return osm.mappaintStyle; 103 } 104 105 public IconElemStyle getPrimitiveNodeStyle(OsmPrimitive osm) { 106 if(!useStyleCache) 107 return (styles != null) ? styles.getIcon(osm) : null; 108 109 if(osm.mappaintStyle == null && styles != null) 110 osm.mappaintStyle = styles.getIcon(osm); 111 112 return (IconElemStyle)osm.mappaintStyle; 103 113 } 104 114 … … 417 427 } 418 428 419 public void drawSelectedRelation(Relation r)420 {421 for (RelationMember m : r.members)422 {423 if (m.member != null && !m.member.incomplete && !m.member.deleted424 && !(m.member instanceof Relation))425 {426 /* nodes drawn on second call */427 if(!(m.member instanceof Node))428 drawSelectedMember(m.member, styles != null ? styles.get(m.member)429 : null, true, true);430 }431 }432 }433 434 429 public void drawSelectedMember(OsmPrimitive osm, ElemStyle style, Boolean area, 435 430 Boolean areaselected) … … 463 458 464 459 r.mappaintVisibleCode = 0; 465 /* TODO implement visible handling for relations too */466 460 467 461 // TODO: is it possible to do this like the nodes/ways code? … … 469 463 return; 470 464 471 // draw multipolygon relations including their ways 472 // other relations are only drawn when selected 473 474 // we are in the "draw selected" phase 475 // TODO: is it necessary to check for r.selected? 476 if(r.selected && selectedCall) 465 if(selectedCall) 477 466 { 478 467 for (RelationMember m : r.members) 479 468 { 480 469 if (m.member != null && !m.member.incomplete && !m.member.deleted 481 && (drawRestriction ||m.member instanceof Node))482 { 483 drawSelectedMember(m.member, styles != null ? styles.get(m.member) : null, true, true);470 && m.member instanceof Node) 471 { 472 drawSelectedMember(m.member, styles != null ? getPrimitiveStyle(m.member) : null, true, true); 484 473 } 485 474 } 486 475 return; 487 476 } 488 489 if (drawMultipolygon && r.keys != null && "multipolygon".equals(r.keys.get("type"))) 490 { 491 drawMultipolygon(r); 492 return; 493 } 494 495 if (drawRestriction && r.keys != null && "restriction".equals(r.keys.get("type"))) 477 else if (drawMultipolygon && r.keys != null && "multipolygon".equals(r.keys.get("type"))) 478 { 479 if(drawMultipolygon(r)) 480 return; 481 } 482 else if (drawRestriction && r.keys != null && "restriction".equals(r.keys.get("type"))) 496 483 { 497 484 drawRestriction(r); 498 return; 499 } 500 501 if(r.selected) 502 drawSelectedRelation(r); 503 } 504 485 } 486 487 if(r.selected) /* draw ways*/ 488 { 489 for (RelationMember m : r.members) 490 { 491 if (m.member != null && !m.member.incomplete && !m.member.deleted 492 && m.member instanceof Way) /* nodes drawn on second call */ 493 { 494 drawSelectedMember(m.member, styles != null ? getPrimitiveStyle(m.member) 495 : null, true, true); 496 } 497 } 498 } 499 } 505 500 506 501 // this current experimental implementation will only work for standard restrictions: … … 724 719 } 725 720 726 IconElemStyle nodeStyle = (IconElemStyle)getPrimitiveStyle(r);721 IconElemStyle nodeStyle = getPrimitiveNodeStyle(r); 727 722 728 723 if (nodeStyle == null) { … … 748 743 } 749 744 750 public voiddrawMultipolygon(Relation r) {745 public Boolean drawMultipolygon(Relation r) { 751 746 Collection<Way> inner = new LinkedList<Way>(); 752 747 Collection<Way> outer = new LinkedList<Way>(); … … 754 749 Collection<Way> outerclosed = new LinkedList<Way>(); 755 750 Boolean incomplete = false; 751 Boolean drawn = false; 756 752 757 753 r.clearErrors(); … … 787 783 outer.add(w); 788 784 else if(r.selected) 789 drawSelectedMember(m.member, styles != null ? styles.get(m.member) : null, true, true); 785 drawSelectedMember(m.member, styles != null 786 ? getPrimitiveStyle(m.member) : null, true, true); 790 787 } 791 788 } … … 798 795 } 799 796 800 ElemStyle wayStyle = styles != null ? styles.get(r) : null;797 ElemStyle wayStyle = styles != null ? getPrimitiveStyle(r) : null; 801 798 if(styles != null && (wayStyle == null || !(wayStyle instanceof AreaElemStyle))) 802 799 { … … 806 803 wayStyle = styles.get(w); 807 804 } 805 r.mappaintStyle = wayStyle; 808 806 } 809 807 … … 814 812 Collection<Way> join = new LinkedList<Way>(); 815 813 814 drawn = true; 816 815 for (Way w : outer) 817 816 { … … 954 953 for (Way wOuter : outer) 955 954 wOuter.mappaintVisibleCode = viewid; 956 return; 955 return drawn; 957 956 } 958 957 for (Way wInner : inner) 959 958 { 960 ElemStyle innerStyle = styles.get(wInner);959 ElemStyle innerStyle = getPrimitiveStyle(wInner); 961 960 if(innerStyle == null) 962 961 { … … 988 987 for (Way wOuter : outer) 989 988 { 990 ElemStyle outerStyle = styles.get(wOuter);989 ElemStyle outerStyle = getPrimitiveStyle(wOuter); 991 990 if(outerStyle == null) 992 991 { … … 1016 1015 } 1017 1016 } 1018 else if(r.selected) 1019 drawSelectedRelation(r); 1017 return drawn; 1020 1018 } 1021 1019
Note:
See TracChangeset
for help on using the changeset viewer.