- Timestamp:
- 2010-06-09T09:41:00+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java
r3316 r3322 120 120 121 121 if (isZoomOk(nodeStyle)) { 122 nodeStyle.paintPrimitive(n, paintSettings, painter, n.isSelected(),122 nodeStyle.paintPrimitive(n, paintSettings, painter, data.isSelected(n), 123 123 false); 124 124 } … … 164 164 if(!isZoomOk(wayStyle)) 165 165 return; 166 167 if (wayStyle == null) {168 wayStyle = LineElemStyle.UNTAGGED_WAY;169 }170 166 171 167 if(wayStyle instanceof LineElemStyle) { … … 182 178 } 183 179 184 public void drawSelectedMember(OsmPrimitive osm, ElemStyle style, boolean area,185 boolean areaselected)186 {187 if(osm instanceof Way)188 {189 if(style instanceof AreaElemStyle) {190 Way way = (Way)osm;191 AreaElemStyle areaStyle = (AreaElemStyle)style;192 areaStyle.getLineStyle().paintPrimitive(way, paintSettings, painter, true, true);193 if(area) {194 painter.drawArea(getPolygon(way), (areaselected ? paintSettings.getRelationSelectedColor() : areaStyle.color), painter.getAreaName(way));195 }196 } else {197 style.paintPrimitive(osm, paintSettings, painter, true, true);198 }199 }200 else if(osm instanceof Node)201 {202 if(isZoomOk(style)) {203 style.paintPrimitive(osm, paintSettings, painter, true, true);204 }205 }206 osm.mappaintDrawnCode = paintid;207 }208 209 180 public void paintUnselectedRelation(Relation r) { 210 211 181 if (drawMultipolygon && "multipolygon".equals(r.get("type"))) 212 { 213 if(drawMultipolygon(r)) 214 return; 215 } 182 drawMultipolygon(r); 216 183 else if (drawRestriction && "restriction".equals(r.get("type"))) 217 {218 184 drawRestriction(r); 219 }220 221 if(data.isSelected(r)) /* draw ways*/222 {223 for (RelationMember m : r.getMembers())224 {225 if (m.isWay() && m.getMember().isDrawable())226 {227 drawSelectedMember(m.getMember(), styles != null ? getPrimitiveStyle(m.getMember(), false)228 : null, true, true);229 }230 }231 }232 185 } 233 186 … … 454 407 if(!visible) 455 408 return drawn; 456 for (Way wInner : multipolygon.getInnerWays()) 457 { 409 for (Way wInner : multipolygon.getInnerWays()) { 458 410 ElemStyle innerStyle = getPrimitiveStyle(wInner, true); 459 if(innerStyle == null) 460 { 461 if (data.isSelected(wInner)) { 411 if(innerStyle == null) { 412 if (data.isSelected(wInner)) 462 413 continue; 463 }464 414 if(zoomok && (wInner.mappaintDrawnCode != paintid || multipolygon.getOuterWays().isEmpty())) { 465 ((AreaElemStyle)wayStyle).getLineStyle().paintPrimitive(wInner, paintSettings, painter, (data.isSelected(wInner)466 r.isSelected());415 ((AreaElemStyle)wayStyle).getLineStyle().paintPrimitive(wInner, paintSettings, 416 painter, (data.isSelected(wInner) || data.isSelected(r)), false); 467 417 } 468 418 wInner.mappaintDrawnCode = paintid; … … 470 420 else 471 421 { 472 if(data.isSelected(r))473 {474 drawSelectedMember(wInner, innerStyle,475 !wayStyle.equals(innerStyle), data.isSelected(wInner));476 }477 422 if(wayStyle.equals(innerStyle)) 478 423 { 479 if(!data.isSelected(r)) { 480 wInner.mappaintDrawnAreaCode = paintid; 424 wInner.mappaintDrawnAreaCode = paintid; 425 if(!data.isSelected(wInner)) 426 { 427 wInner.mappaintDrawnCode = paintid; 428 drawWay(wInner, 0); 481 429 } 482 430 } 483 431 } 484 432 } 485 for (Way wOuter : multipolygon.getOuterWays()) 486 { 433 for (Way wOuter : multipolygon.getOuterWays()) { 487 434 ElemStyle outerStyle = getPrimitiveStyle(wOuter, true); 488 if(outerStyle == null) 489 { 435 if(outerStyle == null) { 490 436 // Selected ways are drawn at the very end 491 if (data.isSelected(wOuter)) {437 if (data.isSelected(wOuter)) 492 438 continue; 493 } 494 if(zoomok) 495 { 496 ((AreaElemStyle)wayStyle).getLineStyle().paintPrimitive(wOuter, paintSettings, painter, (data.isSelected(wOuter) || data.isSelected(r)), r.isSelected()); 439 if(zoomok) { 440 ((AreaElemStyle)wayStyle).getLineStyle().paintPrimitive(wOuter, paintSettings, painter, 441 (data.isSelected(wOuter) || data.isSelected(r)), r.isSelected()); 497 442 } 498 443 wOuter.mappaintDrawnCode = paintid; 499 } 500 else 501 { 502 if(data.isSelected(r)) 503 { 504 drawSelectedMember(wOuter, outerStyle, false, false); 505 } 506 else if(outerStyle instanceof AreaElemStyle) { 507 wOuter.mappaintDrawnAreaCode = paintid; 444 } else if(outerStyle instanceof AreaElemStyle) { 445 wOuter.mappaintDrawnAreaCode = paintid; 446 if(!data.isSelected(wOuter)) { 447 wOuter.mappaintDrawnCode = paintid; 448 drawWay(wOuter, 0); 508 449 } 509 450 } … … 611 552 if (fillAreas > dist && styles != null && styles.hasAreas()) { 612 553 Collection<Way> noAreaWays = new LinkedList<Way>(); 554 final Collection<Way> ways = data.searchWays(bbox); 555 556 /*** disabled ***/ 557 for (final Way osm : ways) { 558 if (osm.isDisabled() && osm.isDrawable() && osm.mappaintDrawnCode != paintid) { 559 drawWay(osm, 0); 560 osm.mappaintDrawnCode = paintid; 561 } 562 } 613 563 614 564 /*** RELATIONS ***/ … … 620 570 621 571 /*** AREAS ***/ 622 for (final Way osm : selectedLast(data, data.searchWays(bbox))) {572 for (final Way osm : selectedLast(data, ways)) { 623 573 if (osm.isDrawable() && osm.mappaintDrawnCode != paintid) { 624 if (isPrimitiveArea(osm) && osm.mappaintDrawnAreaCode != paintid) { 625 drawWay(osm, fillAreas); 626 } else { 574 if (isPrimitiveArea(osm)) { 575 if(osm.mappaintDrawnAreaCode != paintid) 576 drawWay(osm, fillAreas); 577 } else if(!data.isSelected(osm)) { 627 578 noAreaWays.add(osm); 628 579 } … … 633 584 for (final Way osm : noAreaWays) { 634 585 drawWay(osm, 0); 586 osm.mappaintDrawnCode = paintid; 635 587 } 636 588 } else { 637 589 drawMultipolygon = false; 590 final Collection<Way> ways = data.searchWays(bbox); 591 592 /*** WAYS (disabled) ***/ 593 for (final Way way: ways) { 594 if (way.isDisabled() && way.isDrawable() && !data.isSelected(way)) { 595 drawWay(way, 0); 596 way.mappaintDrawnCode = paintid; 597 } 598 } 638 599 639 600 /*** RELATIONS ***/ … … 645 606 646 607 /*** WAYS (filling disabled) ***/ 647 for (final Way way: data.searchWays(bbox)) {608 for (final Way way: ways) { 648 609 if (way.isDrawable() && !data.isSelected(way)) { 649 610 drawWay(way, 0); … … 654 615 /*** SELECTED ***/ 655 616 for (final OsmPrimitive osm : data.getSelected()) { 656 if (osm.isUsable() && !(osm instanceof Node) && osm.mappaintDrawnCode != paintid) { 617 if (osm.isUsable() && !(osm instanceof Node) && (osm instanceof Relation || osm.mappaintDrawnCode != paintid)) { 657 618 osm.visit(new AbstractVisitor() { 658 619 public void visit(Way w) { … … 665 626 666 627 public void visit(Relation r) { 667 /* TODO: is it possible to do this like the nodes/ways code? */668 // Only nodes are painted, ways was already painted before (this might cause that669 // way in selected relation is hidden by another way)670 628 for (RelationMember m : r.getMembers()) { 671 if (m.isNode() && m.getMember().isDrawable()) { 672 drawSelectedMember(m.getMember(), styles != null ? getPrimitiveStyle(m.getMember(), false) : null, true, true); 629 OsmPrimitive osm = m.getMember(); 630 if(osm.isDrawable()) { 631 ElemStyle style = getPrimitiveStyle(m.getMember(), false); 632 if(osm instanceof Way) 633 { 634 if(style instanceof AreaElemStyle) { 635 ((AreaElemStyle)style).getLineStyle().paintPrimitive(osm, paintSettings, painter, true, true); 636 } else { 637 style.paintPrimitive(osm, paintSettings, painter, true, true); 638 } 639 } 640 else if(osm instanceof Node) 641 { 642 if(isZoomOk(style)) { 643 style.paintPrimitive(osm, paintSettings, painter, true, true); 644 } 645 } 646 osm.mappaintDrawnCode = paintid; 673 647 } 674 648 } … … 680 654 /*** NODES ***/ 681 655 for (final Node osm: data.searchNodes(bbox)) { 682 if (!osm.isIncomplete() && !osm.isDeleted() && (data.isSelected(osm) || !osm.is Filtered())656 if (!osm.isIncomplete() && !osm.isDeleted() && (data.isSelected(osm) || !osm.isDisabledAndHidden()) 683 657 && osm.mappaintDrawnCode != paintid) { 684 658 drawNode(osm);
Note:
See TracChangeset
for help on using the changeset viewer.