diff options
| author | Alex Sakhartchouk <alexst@google.com> | 2010-06-24 17:15:34 -0700 |
|---|---|---|
| committer | Alex Sakhartchouk <alexst@google.com> | 2010-06-24 17:15:34 -0700 |
| commit | 9b949fce39f0f39ce9275b71d7c347210775e7a8 (patch) | |
| tree | 76b739126b5b3f10e8fd0bc63071dd22a105e227 /graphics | |
| parent | 8f31bd6b68c796d4a4176721a6e13bfdba2166e0 (diff) | |
| download | frameworks_base-9b949fce39f0f39ce9275b71d7c347210775e7a8.zip frameworks_base-9b949fce39f0f39ce9275b71d7c347210775e7a8.tar.gz frameworks_base-9b949fce39f0f39ce9275b71d7c347210775e7a8.tar.bz2 | |
Adding freetype font rendering to renderscript.
Change-Id: I3a10ffe27092a41df156341c9cb3f7aa19c49f19
Diffstat (limited to 'graphics')
| -rw-r--r-- | graphics/java/android/renderscript/Allocation.java | 15 | ||||
| -rw-r--r-- | graphics/java/android/renderscript/Font.java | 59 | ||||
| -rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 2 | ||||
| -rw-r--r-- | graphics/jni/android_renderscript_RenderScript.cpp | 24 |
4 files changed, 95 insertions, 5 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java index d32a0b5..ddb2abf 100644 --- a/graphics/java/android/renderscript/Allocation.java +++ b/graphics/java/android/renderscript/Allocation.java @@ -386,6 +386,21 @@ public class Allocation extends BaseObj { Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions); return createFromBitmapBoxed(rs, b, dstFmt, genMips); } + + static public Allocation createFromString(RenderScript rs, String str) + throws IllegalArgumentException { + byte[] allocArray = null; + try { + allocArray = str.getBytes("UTF-8"); + Allocation alloc = Allocation.createSized(rs, Element.U8(rs), allocArray.length); + alloc.data(allocArray); + return alloc; + } + catch (Exception e) { + Log.e("rs", "could not convert string to utf-8"); + } + return null; + } } diff --git a/graphics/java/android/renderscript/Font.java b/graphics/java/android/renderscript/Font.java new file mode 100644 index 0000000..41f8827 --- /dev/null +++ b/graphics/java/android/renderscript/Font.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.renderscript; + +import java.io.IOException; +import java.io.InputStream; + +import android.content.res.Resources; +import android.content.res.AssetManager; +import android.util.Log; +import android.util.TypedValue; + +/** + * @hide + * + **/ +public class Font extends BaseObj { + + Font(int id, RenderScript rs) { + super(rs); + mID = id; + } + + static public Font create(RenderScript rs, Resources res, String fileName, int size) + throws IllegalArgumentException { + + rs.validate(); + try { + int dpi = res.getDisplayMetrics().densityDpi; + int fontId = rs.nFontCreateFromFile(fileName, size, dpi); + + if(fontId == 0) { + throw new IllegalStateException("Load loading a font"); + } + Font rsFont = new Font(fontId, rs); + + return rsFont; + + } catch (Exception e) { + // Ignore + } + + return null; + } +} diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index 5f2050e..b2e5b02 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -123,6 +123,8 @@ public class RenderScript { native void nFileA3DGetIndexEntries(int fileA3D, int numEntries, int[] IDs, String[] names); native int nFileA3DGetEntryByIndex(int fileA3D, int index); + native int nFontCreateFromFile(String fileName, int size, int dpi); + native void nAdapter1DBindAllocation(int ad, int alloc); native void nAdapter1DSetConstraint(int ad, int dim, int value); native void nAdapter1DData(int ad, int[] d); diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index 67c25a8..c61a215 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -764,6 +764,19 @@ nFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, jint fileA3D, jint index) // ----------------------------------- +static int +nFontCreateFromFile(JNIEnv *_env, jobject _this, jstring fileName, jint fontSize, jint dpi) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + const char* fileNameUTF = _env->GetStringUTFChars(fileName, NULL); + + jint id = (jint)rsFontCreateFromFile(con, fileNameUTF, fontSize, dpi); + return id; +} + + +// ----------------------------------- + static void nAdapter1DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) { @@ -1395,6 +1408,12 @@ static JNINativeMethod methods[] = { {"nContextDeinitToClient", "()V", (void*)nContextDeinitToClient }, {"nFileOpen", "([B)I", (void*)nFileOpen }, +{"nFileA3DCreateFromAssetStream", "(I)I", (void*)nFileA3DCreateFromAssetStream }, +{"nFileA3DGetNumIndexEntries", "(I)I", (void*)nFileA3DGetNumIndexEntries }, +{"nFileA3DGetIndexEntries", "(II[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, +{"nFileA3DGetEntryByIndex", "(II)I", (void*)nFileA3DGetEntryByIndex }, + +{"nFontCreateFromFile", "(Ljava/lang/String;II)I", (void*)nFontCreateFromFile }, {"nElementCreate", "(IIZI)I", (void*)nElementCreate }, {"nElementCreate2", "([I[Ljava/lang/String;)I", (void*)nElementCreate2 }, @@ -1494,11 +1513,6 @@ static JNINativeMethod methods[] = { {"nSimpleMeshBindVertex", "(III)V", (void*)nSimpleMeshBindVertex }, {"nSimpleMeshBindIndex", "(II)V", (void*)nSimpleMeshBindIndex }, -{"nFileA3DCreateFromAssetStream", "(I)I", (void*)nFileA3DCreateFromAssetStream }, -{"nFileA3DGetNumIndexEntries", "(I)I", (void*)nFileA3DGetNumIndexEntries }, -{"nFileA3DGetIndexEntries", "(II[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries }, -{"nFileA3DGetEntryByIndex", "(II)I", (void*)nFileA3DGetEntryByIndex }, - }; static int registerFuncs(JNIEnv *_env) |
