Changeset 622 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2008-05-03T17:44:05+02:00 (16 years ago)
Author:
gebner
Message:

Color tracks by velocity.

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java

    r608 r622  
    287287        }
    288288
     289        private static Color[] colors = new Color[256];
     290        static {
     291                for (int i = 0; i < colors.length; i++) {
     292                        colors[i] = Color.getHSBColor(i/300.0f, 1, 1);
     293                }
     294        }
     295
    289296        @Override public void paint(Graphics g, MapView mv) {
    290297                String gpsCol = Main.pref.get("color.gps point");
     
    306313                        lines = Main.pref.getBoolean(linesKey);
    307314                boolean large = Main.pref.getBoolean("draw.rawgps.large");
     315                boolean colored = Main.pref.getBoolean("draw.rawgps.colors");
    308316
    309317                Point old = null;
     
    319327                                        Point screen = mv.getPoint(trkPnt.eastNorth);
    320328                                        if (lines && old != null) {
     329                                                double dist = trkPnt.latlon.greatCircleDistance(oldWp.latlon);
     330                                                double dtime = trkPnt.time - oldWp.time;
     331                                                double vel = dist/dtime;
     332
     333                                                if (colored && dtime > 0) {
     334                                                        // scale linearly until 130km/h = 36.1m/s
     335                                                        if (vel < 0 || vel > 36) {
     336                                                                g.setColor(colors[255]);
     337                                                        } else {
     338                                                                g.setColor(colors[(int) (7*vel)]);
     339                                                        }
     340                                                }
    321341                                               
    322342                                            // draw line, if no maxLineLength is set or the line is shorter.
    323                                             if (maxLineLength == -1 || trkPnt.latlon.greatCircleDistance(oldWp.latlon) <= maxLineLength){
     343                                            if (maxLineLength == -1 || dist <= maxLineLength){
    324344                                                g.drawLine(old.x, old.y, screen.x, screen.y);
    325345
  • trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java

    r604 r622  
    1717        private JCheckBox forceRawGpsLines = new JCheckBox(tr("Force lines if no segments imported."));
    1818        private JCheckBox largeGpsPoints = new JCheckBox(tr("Draw large GPS points."));
     19        private JCheckBox colorTracks = new JCheckBox(tr("Color tracks by velocity."));
    1920        private JCheckBox directionHint = new JCheckBox(tr("Draw Direction Arrows"));
    2021        private JCheckBox drawGpsArrows = new JCheckBox(tr("Draw Direction Arrows"));
     
    3435                            forceRawGpsLines.setEnabled(drawRawGpsLines.isSelected());
    3536                            drawGpsArrows.setEnabled(drawRawGpsLines.isSelected());
     37                            colorTracks.setEnabled(drawRawGpsLines.isSelected());
    3638                        }
    3739                });
     
    5153                drawGpsArrows.setEnabled(drawRawGpsLines.isSelected());
    5254                gui.display.add(drawGpsArrows, GBC.eop().insets(40,0,0,0));
     55
     56                // colorTracks
     57                colorTracks.setSelected(Main.pref.getBoolean("draw.rawgps.colors"));
     58                colorTracks.setToolTipText(tr("Choose the hue for the track color by the velocity at that point."));
     59                colorTracks.setEnabled(drawRawGpsLines.isSelected());
     60                gui.display.add(colorTracks, GBC.eop().insets(40,0,0,0));
    5361               
    5462                // largeGpsPoints
     
    98106                Main.pref.put("draw.rawgps.lines.force", forceRawGpsLines.isSelected());
    99107                Main.pref.put("draw.rawgps.direction", drawGpsArrows.isSelected());
     108                Main.pref.put("draw.rawgps.colors", colorTracks.isSelected());
    100109                Main.pref.put("draw.rawgps.large", largeGpsPoints.isSelected());
    101110                Main.pref.put("draw.segment.direction", directionHint.isSelected());
Note: See TracChangeset for help on using the changeset viewer.