Merge pull request #9339 from ehermann/fix_arrow_size_simplified

FIX: rescale arrow if stroke is too large
This commit is contained in:
vshcherb 2020-06-29 14:11:03 +02:00 committed by GitHub
commit 9e6526ecbd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -294,10 +294,16 @@ public class RouteLayer extends OsmandMapLayer implements ContextMenuLayer.ICont
// int len = (int) (distSegment / pxStep); // int len = (int) (distSegment / pxStep);
float pdx = x - px; float pdx = x - px;
float pdy = y - py; float pdy = y - py;
float scale = attrs.paint3.getStrokeWidth() / ( actionArrow.getWidth() / 2.25f);
float scaledWidth = actionArrow.getWidth();
matrix.reset(); matrix.reset();
matrix.postTranslate(0, -actionArrow.getHeight() / 2f); matrix.postTranslate(0, -actionArrow.getHeight() / 2f);
matrix.postRotate((float) angle, actionArrow.getWidth() / 2f, 0); matrix.postRotate((float) angle, actionArrow.getWidth() / 2f, 0);
matrix.postTranslate(px + pdx - actionArrow.getWidth() / 2f, py + pdy); if (scale > 1.0f) {
matrix.postScale(scale, scale);
scaledWidth *= scale;
}
matrix.postTranslate(px + pdx - scaledWidth/ 2f, py + pdy);
canvas.drawBitmap(actionArrow, matrix, paintIconAction); canvas.drawBitmap(actionArrow, matrix, paintIconAction);
} else { } else {
px = x; px = x;