diff options
author | Chris Loer <chris.loer@gmail.com> | 2017-11-30 12:38:06 -0800 |
---|---|---|
committer | Chris Loer <chris.loer@mapbox.com> | 2017-12-18 12:17:22 -0800 |
commit | 97e45d5fdac8d92b1115ed3e6ed06d7b61ef78f2 (patch) | |
tree | 094edfbe331ee11e2a489bb017e2dd5e30663116 /platform/android/MapboxGLAndroidSDK/src | |
parent | f1f2ebb019980d4c53d563d3495e016d50e23945 (diff) | |
download | qtlocation-mapboxgl-97e45d5fdac8d92b1115ed3e6ed06d7b61ef78f2.tar.gz |
[android] Android implementation of local CJK glyph rendering
- Draws bold version of glyph if font stack contains string "bold"
- Not hooked up to global configuration yet
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java new file mode 100644 index 0000000000..920a1270ac --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java @@ -0,0 +1,46 @@ +package com.mapbox.mapboxsdk.text; + +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Bitmap; +import android.graphics.Typeface; +import android.support.annotation.WorkerThread; + +/** + * LocalGlyphRasterizer is the Android-specific platform implementation used + * by the portable local_glyph_rasterizer.hpp + */ +public class LocalGlyphRasterizer { + + /*** + * Uses Android-native drawing code to rasterize a single glyph + * to a square @{link Bitmap} which can be returned to portable + * code for transformation into a Signed Distance Field glyph. + * + * @param fontFamily Font family string to pass to Typeface.create + * @param bold If true, use Typeface.BOLD option + * @param glyphID 16-bit Unicode BMP codepoint to draw + * + * @return Return a @{link Bitmap} to be displayed in the requested tile. + */ + @WorkerThread + protected static Bitmap drawGlyphBitmap(String fontFamily, boolean bold, char glyphID) { + /* + 35x35px dimensions are hardwired to match local_glyph_rasterizer.cpp + These dimensions are large enough to draw a 24 point character in the middle + of the bitmap (y: 20) with some buffer around the edge + */ + Bitmap bitmap = Bitmap.createBitmap(35, 35, Bitmap.Config.ARGB_8888); + + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setTextSize(24); + paint.setTypeface(Typeface.create(fontFamily, bold ? Typeface.BOLD : Typeface.NORMAL)); + + Canvas canvas = new Canvas(); + canvas.setBitmap(bitmap); + canvas.drawText(String.valueOf(glyphID), 0, 20, paint); + + return bitmap; + } +} |