Update speed cameras icons

This commit is contained in:
Victor Shcherb 2012-08-11 00:14:05 +02:00
parent 98d6de5977
commit 00448eca4d
6 changed files with 32 additions and 10 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View file

@ -653,7 +653,7 @@ public class RouteCalculationResult {
return null;
}
public AlarmInfo getMostImportantAlarm(Location fromLoc, AlarmInfo speedAlarm) {
public AlarmInfo getMostImportantAlarm(Location fromLoc, AlarmInfo speedAlarm, boolean showCameras) {
int aInfo = currentDirectionInfo;
int cRoute = currentRoute;
AlarmInfo mostImportant = speedAlarm;
@ -676,7 +676,7 @@ public class RouteCalculationResult {
}
float time = speed > 0 ? d / speed : 0;
int vl = inf.updateDistanceAndGetPriority(time, d);
if(vl < value){
if(vl < value && (!showCameras || inf.getType() == AlarmInfo.SPEED_CAMERA)){
mostImportant = inf;
value = vl;
}

View file

@ -467,7 +467,7 @@ public class RoutingHelper {
return i;
}
public synchronized AlarmInfo getMostImportantAlarm(MetricsConstants mc){
public synchronized AlarmInfo getMostImportantAlarm(MetricsConstants mc, boolean showCameras){
float mxspeed = route.getCurrentMaxSpeed();
AlarmInfo speedAlarm = null;
if(mxspeed != 0 && lastFixedLocation != null && lastFixedLocation.hasSpeed()) {
@ -482,7 +482,7 @@ public class RoutingHelper {
speedAlarm = AlarmInfo.createSpeedLimit(speed);
}
}
return route.getMostImportantAlarm(lastFixedLocation, speedAlarm);
return route.getMostImportantAlarm(lastFixedLocation, speedAlarm, showCameras);
}
public String formatStreetName(String name, String ref) {

View file

@ -321,7 +321,7 @@ public class MapInfoLayer extends OsmandMapLayer {
flp = new FrameLayout.LayoutParams((int)(78 * scaleCoefficient),
(int)(78 * scaleCoefficient), Gravity.RIGHT | Gravity.BOTTOM);
flp.rightMargin = STATUS_BAR_MARGIN_X;
flp.rightMargin = (int) (10*scaleCoefficient);
flp.bottomMargin = (int) (85*scaleCoefficient);
alarmControl.setLayoutParams(flp);

View file

@ -16,6 +16,8 @@ import net.osmand.plus.routing.RouteDirectionInfo;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.router.TurnType;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
@ -516,6 +518,7 @@ public class RouteInfoControls {
paintCircle.setStrokeWidth(11 * scaleCoefficient);
paintCircle.setStyle(Style.STROKE);
paintCircle.setAntiAlias(true);
paintCircle.setDither(true);
final Paint content = new Paint();
content.setColor(Color.WHITE);
content.setStyle(Style.FILL);
@ -527,18 +530,22 @@ public class RouteInfoControls {
final MapInfoControl alarm = new MapInfoControl(ctx) {
private String text = "";
private Bitmap img = null;
private int imgId;
@Override
public boolean updateInfo() {
boolean limits = settings.SHOW_SPEED_LIMITS.get();
boolean cams = settings.SHOW_CAMERAS.get();
boolean visible = false;
if ((limits || cams) && routingHelper != null && routingHelper.isFollowingMode()) {
AlarmInfo alarm = routingHelper.getMostImportantAlarm(settings.METRIC_SYSTEM.get());
AlarmInfo alarm = routingHelper.getMostImportantAlarm(settings.METRIC_SYSTEM.get(), cams);
if(alarm != null) {
int locimgId = 0;
if(alarm.getType() == AlarmInfo.SPEED_LIMIT) {
text = alarm.getIntValue() +"";
} else if(alarm.getType() == AlarmInfo.SPEED_CAMERA) {
text = "CAM";
locimgId = R.drawable.warnings_speed_camera;
} else if(alarm.getType() == AlarmInfo.BORDER_CONTROL) {
text = "CLO";
} else if(alarm.getType() == AlarmInfo.TOLL_BOOTH) {
@ -546,6 +553,7 @@ public class RouteInfoControls {
} else if(alarm.getType() == AlarmInfo.TRAFFIC_CALMING) {
// temporary omega
text = "~^~";
locimgId = R.drawable.warnings_speed_bump;
} else if(alarm.getType() == AlarmInfo.STOP) {
// text = "STOP";
}
@ -557,6 +565,16 @@ public class RouteInfoControls {
visible = limits;
}
}
if(visible) {
if(locimgId != imgId) {
imgId = locimgId;
if(imgId == 0) {
img = null;
} else {
img = BitmapFactory.decodeResource(getResources(), locimgId);
}
}
}
}
}
updateVisibility(visible);
@ -565,10 +583,14 @@ public class RouteInfoControls {
@Override
protected void onDraw(Canvas canvas) {
RectF f = new RectF(th / 2, th / 2, getWidth() - th / 2, getHeight() - th / 2);
canvas.drawOval(f, content);
canvas.drawOval(f, paintCircle);
canvas.drawText(text, getWidth() / 2, getHeight() / 2 + ptext.descent() + 3 * scaleCoefficient, ptext);
if(img == null) {
RectF f = new RectF(th / 2, th / 2, getWidth() - th / 2, getHeight() - th / 2);
canvas.drawOval(f, content);
canvas.drawOval(f, paintCircle);
canvas.drawText(text, getWidth() / 2, getHeight() / 2 + ptext.descent() + 3 * scaleCoefficient, ptext);
} else {
canvas.drawBitmap(img, 0, 0, paintCircle);
}
}
};