Add icon2 .. icon5 rendering

This commit is contained in:
Victor Shcherb 2014-12-15 01:03:20 +01:00
parent ff3fb4b834
commit 4f37694d41
2 changed files with 36 additions and 4 deletions

View file

@ -139,6 +139,10 @@ public class RenderingRuleStorageProperties {
public RenderingRuleProperty R_TEXT_MIN_DISTANCE;
public RenderingRuleProperty R_TEXT_ON_PATH;
public RenderingRuleProperty R_ICON;
public RenderingRuleProperty R_ICON_2;
public RenderingRuleProperty R_ICON_3;
public RenderingRuleProperty R_ICON_4;
public RenderingRuleProperty R_ICON_5;
public RenderingRuleProperty R_ICON_VISIBLE_SIZE;
public RenderingRuleProperty R_LAYER;
public RenderingRuleProperty R_ORDER;
@ -228,6 +232,10 @@ public class RenderingRuleStorageProperties {
// point
R_ICON = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty(ICON));
R_ICON_2 = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty("icon_2"));
R_ICON_3 = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty("icon_3"));
R_ICON_4 = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty("icon_4"));
R_ICON_5 = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty("icon_5"));
R_SHIELD = registerRuleInternal(RenderingRuleProperty.createOutputStringProperty(SHIELD));
// polygon/way

View file

@ -84,6 +84,10 @@ public class OsmandRenderer {
float x = 0;
float y = 0;
String resId;
String resId2;
String resId3;
String resId4;
String resId5;
String shieldId;
int iconOrder;
float iconSize;
@ -340,16 +344,24 @@ public class OsmandRenderer {
RectF shieldRf = calculateRect(rc, icon, shield.getWidth(), shield.getHeight());
if (coeff != 1f) {
Rect src = new Rect(0, 0, shield.getWidth(), shield.getHeight());
cv.drawBitmap(shield, src, shieldRf, paintIcon);
drawBitmap(cv, shield, shieldRf, src);
} else {
cv.drawBitmap(shield, shieldRf.left, shieldRf.top, paintIcon);
drawBitmap(cv, shield, shieldRf);
}
}
if (coeff != 1f) {
Rect src = new Rect(0, 0, ico.getWidth(), ico.getHeight());
cv.drawBitmap(ico, src, rf, paintIcon);
drawBitmap(cv, ico, rf, src);
drawBitmap(cv, RenderingIcons.getIcon(context, icon.resId2), rf, src);
drawBitmap(cv, RenderingIcons.getIcon(context, icon.resId3), rf, src);
drawBitmap(cv, RenderingIcons.getIcon(context, icon.resId4), rf, src);
drawBitmap(cv, RenderingIcons.getIcon(context, icon.resId5), rf, src);
} else {
cv.drawBitmap(ico, rf.left, rf.top, paintIcon);
drawBitmap(cv, ico, rf);
drawBitmap(cv, RenderingIcons.getIcon(context, icon.resId2), rf);
drawBitmap(cv, RenderingIcons.getIcon(context, icon.resId3), rf);
drawBitmap(cv, RenderingIcons.getIcon(context, icon.resId4), rf);
drawBitmap(cv, RenderingIcons.getIcon(context, icon.resId5), rf);
}
if(visibleRect != null) {
visibleRect.inset(-visibleRect.width() / 4, -visibleRect.height() / 4);
@ -366,6 +378,14 @@ public class OsmandRenderer {
}
}
protected void drawBitmap(Canvas cv, Bitmap ico, RectF rf) {
cv.drawBitmap(ico, rf.left, rf.top, paintIcon);
}
protected void drawBitmap(Canvas cv, Bitmap ico, RectF rf, Rect src) {
cv.drawBitmap(ico, src, rf, paintIcon);
}
private RectF calculateRect(RenderingContext rc, IconDrawInfo icon, int visbleWidth, int visbleHeight) {
RectF rf;
float coeff = rc.getDensityValue(rc.screenDensityRatio * rc.textScale);
@ -789,6 +809,10 @@ public class OsmandRenderer {
ico.iconSize = rc.getComplexValue(render, render.ALL.R_ICON_VISIBLE_SIZE, -1);
ico.shieldId = render.getStringPropertyValue(render.ALL.R_SHIELD);
ico.resId = resId;
ico.resId2 = render.getStringPropertyValue(render.ALL.R_ICON_2);
ico.resId3 = render.getStringPropertyValue(render.ALL.R_ICON_3);
ico.resId4 = render.getStringPropertyValue(render.ALL.R_ICON_4);
ico.resId5 = render.getStringPropertyValue(render.ALL.R_ICON_5);
rc.iconsToDraw.add(ico);
}
if (renderText) {