Graphics API enhancements, closes #92
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
* Copyright 2016 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -16,22 +17,35 @@
|
||||
*/
|
||||
package org.oscim.android.canvas;
|
||||
|
||||
import android.graphics.PorterDuff;
|
||||
|
||||
import org.oscim.backend.canvas.Bitmap;
|
||||
import org.oscim.backend.canvas.Canvas;
|
||||
import org.oscim.backend.canvas.Paint;
|
||||
|
||||
public class AndroidCanvas implements Canvas {
|
||||
final android.graphics.Canvas canvas;
|
||||
|
||||
public final android.graphics.Canvas canvas;
|
||||
|
||||
public AndroidCanvas() {
|
||||
canvas = new android.graphics.Canvas();
|
||||
}
|
||||
|
||||
public AndroidCanvas(android.graphics.Canvas canvas) {
|
||||
this.canvas = canvas;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBitmap(Bitmap bitmap) {
|
||||
canvas.setBitmap(((AndroidBitmap) bitmap).mBitmap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawText(String string, float x, float y, Paint paint) {
|
||||
if (string != null)
|
||||
canvas.drawText(string, x, y, ((AndroidPaint) paint).mPaint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawText(String string, float x, float y, Paint fill, Paint stroke) {
|
||||
if (string != null) {
|
||||
@@ -45,7 +59,25 @@ public class AndroidCanvas implements Canvas {
|
||||
@Override
|
||||
public void drawBitmap(Bitmap bitmap, float x, float y) {
|
||||
canvas.drawBitmap(((AndroidBitmap) bitmap).mBitmap, x, y, null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawLine(int x1, int y1, int x2, int y2, Paint paint) {
|
||||
canvas.drawLine(x1, y1, x2, y2, ((AndroidPaint) paint).mPaint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillColor(int color) {
|
||||
canvas.drawColor(color, PorterDuff.Mode.CLEAR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeight() {
|
||||
return canvas.getHeight();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getWidth() {
|
||||
return canvas.getWidth();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
||||
* Copyright 2016 devemux86
|
||||
*
|
||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||
*
|
||||
@@ -17,21 +18,23 @@
|
||||
package org.oscim.android.canvas;
|
||||
|
||||
import android.graphics.Paint.FontMetrics;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.Typeface;
|
||||
|
||||
import org.oscim.backend.canvas.Paint;
|
||||
|
||||
class AndroidPaint implements Paint {
|
||||
|
||||
private static int getStyle(org.oscim.backend.canvas.Paint.FontStyle fontStyle) {
|
||||
switch (fontStyle) {
|
||||
case BOLD:
|
||||
return 1;
|
||||
return Typeface.BOLD;
|
||||
case BOLD_ITALIC:
|
||||
return 3;
|
||||
return Typeface.BOLD_ITALIC;
|
||||
case ITALIC:
|
||||
return 2;
|
||||
return Typeface.ITALIC;
|
||||
case NORMAL:
|
||||
return 0;
|
||||
return Typeface.NORMAL;
|
||||
}
|
||||
|
||||
throw new IllegalArgumentException("unknown font style: " + fontStyle);
|
||||
@@ -56,6 +59,8 @@ class AndroidPaint implements Paint {
|
||||
|
||||
final android.graphics.Paint mPaint;
|
||||
|
||||
private final Rect rect = new Rect();
|
||||
|
||||
AndroidPaint() {
|
||||
mPaint = new android.graphics.Paint(
|
||||
android.graphics.Paint.ANTI_ALIAS_FLAG);
|
||||
@@ -73,11 +78,16 @@ class AndroidPaint implements Paint {
|
||||
|
||||
@Override
|
||||
public void setStrokeCap(Cap cap) {
|
||||
android.graphics.Paint.Cap androidCap = android.graphics.Paint.Cap
|
||||
.valueOf(cap.name());
|
||||
android.graphics.Paint.Cap androidCap = android.graphics.Paint.Cap.valueOf(cap.name());
|
||||
mPaint.setStrokeCap(androidCap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStrokeJoin(Join join) {
|
||||
android.graphics.Paint.Join androidJoin = android.graphics.Paint.Join.valueOf(join.name());
|
||||
mPaint.setStrokeJoin(androidJoin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStrokeWidth(float width) {
|
||||
mPaint.setStrokeWidth(width);
|
||||
@@ -90,6 +100,7 @@ class AndroidPaint implements Paint {
|
||||
|
||||
@Override
|
||||
public void setTextAlign(Align align) {
|
||||
// Align text in text layer
|
||||
//mPaint.setTextAlign(android.graphics.Paint.Align.valueOf(align.name()));
|
||||
}
|
||||
|
||||
@@ -122,4 +133,15 @@ class AndroidPaint implements Paint {
|
||||
// //fontDescent = (float) Math.ceil(Math.abs(fm.descent));
|
||||
return Math.abs(fm.bottom);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getTextHeight(String text) {
|
||||
mPaint.getTextBounds(text, 0, text.length(), rect);
|
||||
return rect.height();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getTextWidth(String text) {
|
||||
return measureText(text);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user