aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2012-04-28 12:38:42 +0200
committerSamuel Tardieu <sam@rfc1149.net>2012-04-28 13:30:09 +0200
commit66ac880535030ecdff4989c1c6a3133d9d6e8061 (patch)
tree6a9184d1b702f985a95e36fa7ee336ff4b8f9c15
parent029f40a82f939bee3ad6b6ec00ced6c4f40044b9 (diff)
downloadcgeo-66ac880535030ecdff4989c1c6a3133d9d6e8061.zip
cgeo-66ac880535030ecdff4989c1c6a3133d9d6e8061.tar.gz
cgeo-66ac880535030ecdff4989c1c6a3133d9d6e8061.tar.bz2
Refactoring: cache/waypoint display and initial array capacity
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java37
1 files changed, 15 insertions, 22 deletions
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index e81760a..18815af 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -1660,12 +1660,10 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
* Waypoint. Mutally exclusive with cache
* @return
*/
- private CachesOverlayItemImpl getItem(IWaypoint coord, cgCache cache, cgWaypoint waypoint) {
+ private CachesOverlayItemImpl getItem(final IWaypoint coord, final cgCache cache, final cgWaypoint waypoint) {
if (cache != null) {
-
- CachesOverlayItemImpl item = mapProvider.getCachesOverlayItem(coord, cache.getType());
-
- int hashcode = new HashCodeBuilder()
+ final CachesOverlayItemImpl item = mapProvider.getCachesOverlayItem(coord, cache.getType());
+ final int hashcode = new HashCodeBuilder()
.append(cache.isReliableLatLon())
.append(cache.getType().id)
.append(cache.isDisabled() || cache.isArchived())
@@ -1677,23 +1675,20 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
.append(cache.getListId() > 0)
.toHashCode();
- LayerDrawable ldFromCache = CGeoMap.overlaysCache.get(hashcode);
+ final LayerDrawable ldFromCache = CGeoMap.overlaysCache.get(hashcode);
if (ldFromCache != null) {
item.setMarker(ldFromCache);
return item;
}
- ArrayList<Drawable> layers = new ArrayList<Drawable>();
- ArrayList<int[]> insets = new ArrayList<int[]>();
-
+ // Set initial capacities to the maximum of layers and insets to avoid dynamic reallocation
+ final ArrayList<Drawable> layers = new ArrayList<Drawable>(9);
+ final ArrayList<int[]> insets = new ArrayList<int[]>(8);
// background: disabled or not
- Drawable marker = getResources().getDrawable(R.drawable.marker);
- if (cache.isDisabled() || cache.isArchived()) {
- marker = getResources().getDrawable(R.drawable.marker_disabled);
- }
+ final Drawable marker = getResources().getDrawable(cache.isDisabled() || cache.isArchived() ? R.drawable.marker_disabled : R.drawable.marker);
layers.add(marker);
- int resolution = marker.getIntrinsicWidth() > 40 ? 1 : 0;
+ final int resolution = marker.getIntrinsicWidth() > 40 ? 1 : 0;
// reliable or not
if (!cache.isReliableLatLon()) {
insets.add(INSET_RELIABLE[resolution]);
@@ -1703,7 +1698,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
layers.add(getResources().getDrawable(cache.getType().markerId));
insets.add(INSET_TYPE[resolution]);
// own
- if ( cache.isOwn() ) {
+ if (cache.isOwn()) {
layers.add(getResources().getDrawable(R.drawable.marker_own));
insets.add(INSET_OWN[resolution]);
// if not, checked if stored
@@ -1731,11 +1726,10 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
insets.add(INSET_PERSONALNOTE[resolution]);
}
-
- LayerDrawable ld = new LayerDrawable(layers.toArray(new Drawable[layers.size()]));
+ final LayerDrawable ld = new LayerDrawable(layers.toArray(new Drawable[layers.size()]));
int index = 1;
- for ( int[] inset : insets) {
+ for (final int[] inset : insets) {
ld.setLayerInset(index++, inset[0], inset[1], inset[2], inset[3]);
}
@@ -1743,10 +1737,10 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
item.setMarker(ld);
return item;
+ }
- } else if (waypoint != null) {
-
- CachesOverlayItemImpl item = mapProvider.getCachesOverlayItem(coord, null);
+ if (waypoint != null) {
+ final CachesOverlayItemImpl item = mapProvider.getCachesOverlayItem(coord, null);
Drawable[] layers = new Drawable[2];
layers[0] = getResources().getDrawable(R.drawable.marker);
layers[1] = getResources().getDrawable(waypoint.getWaypointType().markerId);
@@ -1762,7 +1756,6 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
return null;
-
}
}