public void draw(PaintScreen dw) { float maxHeight = Math.round(dw.getHeight() / 10f) + 1; Bitmap bitmap = DataSource.building; if (bitmap != null) { // dw.paintBitmap(bitmap, cMarker.x - maxHeight/1.5f, cMarker.y - maxHeight/1.5f); // dw.paintBitmap(bitmap, cMarker.x, cMarker.y); } // bogus // drawCircle(dw); // drawTextBlock(dw); // Log.d("cMarker","cMarker.x = "+cMarker.x+", cMarker.y = "+cMarker.y); }
public void drawCircle(PaintScreen dw) { if (isVisible) { // float maxHeight = Math.round(dw.getHeight() / 10f) + 1; float maxHeight = dw.getHeight(); dw.setStrokeWidth(maxHeight / 100f); dw.setFill(false); dw.setColor(DataSource.getColor(datasource)); // draw circle with radius depending on distance // 0.44 is approx. vertical fov in radians double angle = 2.0 * Math.atan2(10, distance); double radius = Math.max(Math.min(angle / 0.44 * maxHeight, maxHeight), maxHeight / 25f); // double radius = angle/0.44d * (double)maxHeight; dw.paintCircle(cMarker.x, cMarker.y, (float) radius); } }
public void drawTextBlock(PaintScreen dw) { // TODO: grandezza cerchi e trasparenza float maxHeight = Math.round(dw.getHeight() / 10f) + 1; // TODO: change textblock only when distance changes String textStr = ""; double d = distance; DecimalFormat df = new DecimalFormat("@#"); if (d < 1000.0) { textStr = title + " (" + df.format(d) + "m)"; } else { d = d / 1000.0; textStr = title + " (" + df.format(d) + "km)"; } textBlock = new TextObj(textStr, Math.round(maxHeight / 2f) + 1, 250, dw, underline); if (isVisible) { dw.setColor(DataSource.getColor(datasource)); float currentAngle = MixUtils.getAngle(cMarker.x, cMarker.y, signMarker.x, signMarker.y); txtLab.prepare(textBlock); dw.setStrokeWidth(1f); dw.setFill(true); dw.paintObj( txtLab, signMarker.x - txtLab.getWidth() / 2, signMarker.y + maxHeight, currentAngle + 90, 1); } }