Ignore:
Timestamp:
07/28/07 19:48:14 (5 years ago)
Author:
saua
Message:

This should fix Issue #13

File:
1 edited

Legend:

Unmodified
Added
Removed
  • bbtracker/trunk/src/org/bbtracker/mobile/gui/TrackTile.java

    r19 r36  
    1010import org.bbtracker.TrackSegment; 
    1111import org.bbtracker.Utils; 
     12import org.bbtracker.UnitConverter.ScaleConfiguration; 
     13import org.bbtracker.mobile.Preferences; 
    1214 
    1315public class TrackTile extends Tile { 
     
    3032        private static final int SCALE_HEIGTH = 5; 
    3133 
     34        private final Track track; 
     35 
    3236        private double minimumLongitude, minimumLatitude; 
    3337 
    3438        private double scale; 
    3539 
    36         private final Track track; 
    37  
    3840        private TrackPoint currentPoint; 
    3941 
    4042        private int scaleSizeInPixel; 
    4143 
    42         private int scaleSize; 
     44        private String scaleLabelCenter; 
     45 
     46        private String scaleLabelRight; 
    4347 
    4448        public TrackTile(final Track track) { 
     
    8791                                .distance(minimumLatitude, minimumLongitude, minimumLatitude, maximumLongitude); 
    8892                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); 
    105115        } 
    106116 
     
    116126                        return; 
    117127                } 
    118                 final int segmentCount = track.getSegmentCount(); 
    119                 if (segmentCount < 1 || track.getSegment(0).getPointCount() == 0) { 
     128                if (track.getPointCount() == 0) { 
    120129                        return; 
    121130                } 
     
    183192 
    184193        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                } 
    213197 
    214198                final Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); 
    215199 
    216                 final int left = (font.stringWidth(leftLabel) / 2) + 2; 
     200                final int left = (font.stringWidth("0") / 2) + 2; 
    217201                g.setFont(font); 
    218202                g.setColor(0x00000000); 
     
    221205 
    222206                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); 
    226210        } 
    227211} 
Note: See TracChangeset for help on using the changeset viewer.