Ignore:
Timestamp:
2009-06-06T13:33:27+02:00 (17 years ago)
Author:
stoecker
Message:

fix #2667 - patch by Daeron - Add support for dash patterns in mappaint

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java

    r1629 r1635  
    5555    protected Color untaggedColor;
    5656    protected Color textColor;
    57     protected int currentDashed = 0;
     57    protected float[] currentDashed = new float[0];
    5858    protected Color currentDashedColor;
    5959    protected int currentWidth = 0;
     
    250250        int width = defaultSegmentWidth;
    251251        int realWidth = 0; /* the real width of the element in meters */
    252         int dashed = 0;
     252        float dashed[] = new float[0];
    253253        Color dashedColor = null;
    254254        Node lastN;
     
    11251125    }
    11261126
    1127     private void drawSeg(Node n1, Node n2, Color col, boolean showDirection, int width, int dashed, Color dashedColor) {
     1127    private void drawSeg(Node n1, Node n2, Color col, boolean showDirection, int width, float dashed[], Color dashedColor) {
    11281128        //profilerSegments++;
    1129         if (col != currentColor || width != currentWidth || dashed != currentDashed || dashedColor != currentDashedColor) {
     1129        if (col != currentColor || width != currentWidth || !Arrays.equals(dashed,currentDashed) || dashedColor != currentDashedColor) {
    11301130            displaySegments(col, width, dashed, dashedColor);
    11311131        }
     
    11491149
    11501150    protected void displaySegments() {
    1151         displaySegments(null, 0, 0, null);
    1152     }
    1153 
    1154     protected void displaySegments(Color newColor, int newWidth, int newDash, Color newDashedColor) {
     1151        displaySegments(null, 0, new float[0], null);
     1152    }
     1153
     1154    protected void displaySegments(Color newColor, int newWidth, float newDash[], Color newDashedColor) {
    11551155        if (currentPath != null) {
    11561156            Graphics2D g2d = (Graphics2D)g;
    11571157            g2d.setColor(inactive ? inactiveColor : currentColor);
    11581158            if (currentStroke == null && useStrokes > dist) {
    1159                 if (currentDashed != 0)
    1160                     g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,0,new float[] {currentDashed},0));
     1159                if (currentDashed.length > 0) {
     1160                    try {
     1161                        g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,0,currentDashed,0));
     1162                    } catch (IllegalArgumentException e) {
     1163                        g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
     1164                    }
     1165                }
    11611166                else
    11621167                    g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
     
    11671172                g2d.setColor(currentDashedColor);
    11681173                if (currentStroke == null && useStrokes > dist) {
    1169                     if (currentDashed != 0)
    1170                         g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,0,new float[] {currentDashed},currentDashed));
     1174                    if (currentDashed.length > 0) {
     1175                        float[] currentDashedOffset = new float[currentDashed.length];
     1176                        System.arraycopy(currentDashed, 1, currentDashedOffset, 0, currentDashed.length - 1);
     1177                        currentDashedOffset[currentDashed.length-1] = currentDashed[0];
     1178                        float offset = currentDashedOffset[0];
     1179                        try {
     1180                            g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,0,currentDashedOffset,offset));
     1181                        } catch (IllegalArgumentException e) {
     1182                            g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
     1183                        }
     1184                    }
    11711185                    else
    11721186                        g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
Note: See TracChangeset for help on using the changeset viewer.