diff options
Diffstat (limited to 'src/net/cbaines/suma/BusStopOverlay.java')
-rw-r--r-- | src/net/cbaines/suma/BusStopOverlay.java | 83 |
1 files changed, 47 insertions, 36 deletions
diff --git a/src/net/cbaines/suma/BusStopOverlay.java b/src/net/cbaines/suma/BusStopOverlay.java index bc315cb..639f851 100644 --- a/src/net/cbaines/suma/BusStopOverlay.java +++ b/src/net/cbaines/suma/BusStopOverlay.java @@ -21,8 +21,6 @@ package net.cbaines.suma; import java.sql.SQLException; import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; import java.util.List; import org.osmdroid.views.MapView; @@ -68,7 +66,7 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { private float userScale = 1f; - private HashMap<BusRoute, Boolean> routes = new HashMap<BusRoute, Boolean>(); + private boolean[] routes = new boolean[5]; public BusStopOverlay(Context context) throws SQLException { super(context); @@ -91,8 +89,8 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { Log.i(TAG, "Finished loading bus stops in to overlay " + (System.currentTimeMillis() - startTime)); } - void setRoutes(BusRoute route, boolean visible) { - routes.put(route, visible); + void setRoutes(int route, boolean visible) { + routes[route] = visible; } @Override @@ -120,15 +118,22 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { BusStop stop = busStops.get(stopNum); byte routeNum = 0; + final byte stopRoutes = stop.routes; - for (Iterator<BusRoute> busRouteIter = stop.routes.iterator(); busRouteIter.hasNext();) { - BusRoute route = busRouteIter.next(); - if (routes.get(route)) { - break; + boolean drawing = false; + + for (int i = 0; i < 5; i++) { + if ((stopRoutes & (1 << i)) != 0) { + routeNum++; + if (routes[i]) { + drawing = true; + } } - continue; } + if (!drawing) + continue; + int yOfsetPerMarker = (int) (10 * scale); int markerYSize = (int) (8 * scale); @@ -154,30 +159,32 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { yOfsetPerMarker = (int) (8 * scale); } - for (BusRoute route : stop.routes) { - - // Log.i(TAG, "Route " + route + " is " + routes.get(route)); + for (int i = 0; i < 5; i++) { + if ((stopRoutes & (1 << i)) != 0) { + + // Log.i(TAG, "Route " + route + " is " + routes.get(route)); + + // Log.i(TAG, "Index is " + busRoutes.indexOf(route) + " busRoutes " + busRoutes); + + if (i == 0) { + paint.setColor(U1); + } else if (i == 1) { + paint.setColor(U1N); + } else if (i == 2) { + paint.setColor(U2); + } else if (i == 3) { + paint.setColor(U6); + } else if (i == 4) { + paint.setColor(U9); + } else { + Log.e(TAG, "Unknown route code"); + } - // Log.i(TAG, "Index is " + busRoutes.indexOf(route) + " busRoutes " + busRoutes); + canvas.drawRect(rectLeft, mCurScreenCoords.y + ((yOfsetPerMarker * makersPlaced) - (45 * scale)), rectRight, mCurScreenCoords.y + + (yOfsetPerMarker * makersPlaced) - ((45 * scale) - markerYSize), paint); - if (route.code.equals("U1")) { - paint.setColor(U1); - } else if (route.code.equals("U1N")) { - paint.setColor(U1N); - } else if (route.code.equals("U2")) { - paint.setColor(U2); - } else if (route.code.equals("U6")) { - paint.setColor(U6); - } else if (route.code.equals("U9")) { - paint.setColor(U9); - } else { - Log.e(TAG, "Unknown route code"); + makersPlaced++; } - - canvas.drawRect(rectLeft, mCurScreenCoords.y + ((yOfsetPerMarker * makersPlaced) - (45 * scale)), rectRight, mCurScreenCoords.y - + (yOfsetPerMarker * makersPlaced) - ((45 * scale) - markerYSize), paint); - - makersPlaced++; } } @@ -284,13 +291,17 @@ public class BusStopOverlay extends Overlay implements RouteColorConstants { pj.toPixels(busStop.point, mItemPoint); if (marker.getBounds().contains(mTouchScreenPoint.x - mItemPoint.x, mTouchScreenPoint.y - mItemPoint.y)) { - for (Iterator<BusRoute> busRouteIter = busStop.routes.iterator(); busRouteIter.hasNext();) { - BusRoute route = busRouteIter.next(); - if (routes.get(route)) { - break; + boolean drawing = false; + for (int route = 0; route < 5; route++) { + if ((busStop.routes & (1 << route)) != 0) { + if (routes[route]) { + drawing = true; + break; + } } - continue; } + if (!drawing) + continue; return busStop; } |