- Timestamp:
- 07/28/07 19:48:14 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
bbtracker/trunk/src/org/bbtracker/mobile/gui/TrackTile.java
r19 r36 10 10 import org.bbtracker.TrackSegment; 11 11 import org.bbtracker.Utils; 12 import org.bbtracker.UnitConverter.ScaleConfiguration; 13 import org.bbtracker.mobile.Preferences; 12 14 13 15 public class TrackTile extends Tile { … … 30 32 private static final int SCALE_HEIGTH = 5; 31 33 34 private final Track track; 35 32 36 private double minimumLongitude, minimumLatitude; 33 37 34 38 private double scale; 35 39 36 private final Track track;37 38 40 private TrackPoint currentPoint; 39 41 40 42 private int scaleSizeInPixel; 41 43 42 private int scaleSize; 44 private String scaleLabelCenter; 45 46 private String scaleLabelRight; 43 47 44 48 public TrackTile(final Track track) { … … 87 91 .distance(minimumLatitude, minimumLongitude, minimumLatitude, maximumLongitude); 88 92 if (widthInMeter < 1) { 89 scaleSize = 0; 90 return; 91 } 92 93 final int metersAvailableForScale = (int) (widthInMeter * 0.9); 94 95 scaleSize = 1; 96 while (scaleSize < metersAvailableForScale / 10) { 97 scaleSize = scaleSize * 10; 98 } 99 if (scaleSize * 5 < metersAvailableForScale) { 100 scaleSize = scaleSize * 5; 101 } else if (scaleSize * 2 < metersAvailableForScale) { 102 scaleSize = scaleSize * 2; 103 } 104 scaleSizeInPixel = (int) (scaleSize * (width / widthInMeter)); 93 scaleSizeInPixel = 0; 94 return; 95 } 96 97 final double availableLengthInMeter = widthInMeter * 0.9; 98 99 final ScaleConfiguration conf = Preferences.getInstance().getUnitsConverter().getScaleConfiguration( 100 availableLengthInMeter); 101 102 switch (conf.lengthInUnits) { 103 case 1: 104 scaleLabelCenter = "0.5"; 105 break; 106 case 5: 107 scaleLabelCenter = "2.5"; 108 break; 109 default: 110 scaleLabelCenter = String.valueOf(conf.lengthInUnits / 2); 111 } 112 scaleLabelRight = conf.lengthInUnits + " " + conf.unit; 113 114 scaleSizeInPixel = (int) ((conf.lengthInMeter / widthInMeter) * width); 105 115 } 106 116 … … 116 126 return; 117 127 } 118 final int segmentCount = track.getSegmentCount(); 119 if (segmentCount < 1 || track.getSegment(0).getPointCount() == 0) { 128 if (track.getPointCount() == 0) { 120 129 return; 121 130 } … … 183 192 184 193 private void drawScale(final Graphics g) { 185 if (scaleSize == 0) { 186 return; 187 } 188 189 String unit; 190 int displayScaleSize; 191 192 if (scaleSize >= 1000) { 193 unit = "km"; 194 displayScaleSize = scaleSize / 1000; 195 } else { 196 unit = "m"; 197 displayScaleSize = scaleSize; 198 } 199 200 final String leftLabel = "0"; 201 final String middleLabel; 202 switch (displayScaleSize) { 203 case 1: 204 middleLabel = "0.5"; 205 break; 206 case 5: 207 middleLabel = "2.5"; 208 break; 209 default: 210 middleLabel = String.valueOf(displayScaleSize / 2); 211 } 212 final String rightLabel = displayScaleSize + " " + unit; 194 if (scaleSizeInPixel == 0) { 195 return; 196 } 213 197 214 198 final Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); 215 199 216 final int left = (font.stringWidth( leftLabel) / 2) + 2;200 final int left = (font.stringWidth("0") / 2) + 2; 217 201 g.setFont(font); 218 202 g.setColor(0x00000000); … … 221 205 222 206 final int textBottom = height - 4 - SCALE_HEIGTH; 223 g.drawString( leftLabel, left, textBottom, Graphics.BOTTOM | Graphics.HCENTER);224 g.drawString( middleLabel, left + (scaleSizeInPixel / 2), textBottom, Graphics.BOTTOM | Graphics.HCENTER);225 g.drawString( rightLabel, left + scaleSizeInPixel, textBottom, Graphics.BOTTOM | Graphics.HCENTER);207 g.drawString("0", left, textBottom, Graphics.BOTTOM | Graphics.HCENTER); 208 g.drawString(scaleLabelCenter, left + (scaleSizeInPixel / 2), textBottom, Graphics.BOTTOM | Graphics.HCENTER); 209 g.drawString(scaleLabelRight, left + scaleSizeInPixel, textBottom, Graphics.BOTTOM | Graphics.HCENTER); 226 210 } 227 211 }
Note: See TracChangeset
for help on using the changeset viewer.