Ignore:
Timestamp:
2013-02-21T19:11:14+01:00 (11 years ago)
Author:
akks
Message:

see #8447: advanced preferences to customize helper lines color and stroke

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java

    r5735 r5739  
    22package org.openstreetmap.josm.gui.util;
    33
     4import java.awt.BasicStroke;
    45import static org.openstreetmap.josm.tools.I18n.tr;
    56
     
    910import java.awt.Dimension;
    1011import java.awt.Image;
     12import java.awt.Stroke;
    1113import java.awt.Toolkit;
    1214import java.awt.Window;
     
    1719import java.awt.image.FilteredImageSource;
    1820import java.lang.reflect.InvocationTargetException;
     21import java.util.Arrays;
    1922
    2023import javax.swing.GrayFilter;
     
    156159        return timer;
    157160    }
     161   
     162    /**
     163     * Return s new BasicStroke object with given thickness and style
     164     * @param code = 3.5 -> thickness=3.5px
     165     * @param code = 3.5 10 5 -> thickness=3.5px, dashed: 10px filled + 5px empty
     166     */
     167    public static Stroke getCustomizedStroke(String code) {
     168        String[] s = code.trim().split("[^\\.0-9]+");
     169       
     170        if (s.length==0) return new BasicStroke();
     171        float w;
     172        try {
     173            w = Float.parseFloat(s[0]);
     174        } catch (NumberFormatException ex) {
     175            w = 1.0f;
     176        }
     177        if (s.length>1) {
     178            float dash[]= new float[s.length-1];
     179            try {
     180                for (int i=1; i<s.length; i++) {
     181                   dash[i-1] = Float.parseFloat(s[i]);
     182                }
     183            } catch (NumberFormatException ex) {
     184                System.err.println("Error in stroke preference format: "+code);
     185                dash = new float[]{5.0f};
     186            }
     187            // dashed stroke
     188            return new BasicStroke(w, BasicStroke.CAP_BUTT,
     189                    BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f);
     190        } else {
     191            if (w>1) {
     192                // thick stroke
     193                return new BasicStroke(w, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
     194            } else {
     195                // thin stroke
     196                return new BasicStroke(w);
     197            }
     198        }
     199    }
     200   
    158201}
Note: See TracChangeset for help on using the changeset viewer.