diff options
author | Alex Sakhartchouk <alexst@google.com> | 2010-08-18 15:46:43 -0700 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2010-08-18 15:46:43 -0700 |
commit | 27f50523a45100f3b4861762b6263e0b9ba6e22e (patch) | |
tree | aec97923b179337917c09bdf09c5880417ca52d2 /graphics | |
parent | 468c3230dafc2d131bdeded7b5a6825988166244 (diff) | |
download | frameworks_base-27f50523a45100f3b4861762b6263e0b9ba6e22e.zip frameworks_base-27f50523a45100f3b4861762b6263e0b9ba6e22e.tar.gz frameworks_base-27f50523a45100f3b4861762b6263e0b9ba6e22e.tar.bz2 |
Renderscript samples. Merged two model related projects. Cleanup.
Change-Id: I6fdc70420eee7dfecf0b051fd687e5797c6580ce
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/java/android/renderscript/Font.java | 109 |
1 files changed, 108 insertions, 1 deletions
diff --git a/graphics/java/android/renderscript/Font.java b/graphics/java/android/renderscript/Font.java index d79909e..de25014 100644 --- a/graphics/java/android/renderscript/Font.java +++ b/graphics/java/android/renderscript/Font.java @@ -18,6 +18,8 @@ package android.renderscript; import java.io.IOException; import java.io.InputStream; +import java.util.Map; +import java.util.HashMap; import android.content.res.Resources; import android.content.res.AssetManager; @@ -30,10 +32,100 @@ import android.util.TypedValue; **/ public class Font extends BaseObj { + //These help us create a font by family name + private static final String[] sSansNames = { + "sans-serif", "arial", "helvetica", "tahoma", "verdana" + }; + + private static final String[] sSerifNames = { + "serif", "times", "times new roman", "palatino", "georgia", "baskerville", + "goudy", "fantasy", "cursive", "ITC Stone Serif" + }; + + private static final String[] sMonoNames = { + "monospace", "courier", "courier new", "monaco" + }; + + private static class FontFamily { + String[] mNames; + String mNormalFileName; + String mBoldFileName; + String mItalicFileName; + String mBoldItalicFileName; + } + + private static Map<String, FontFamily> sFontFamilyMap; + + public enum Style { + NORMAL, + BOLD, + ITALIC, + BOLD_ITALIC; + } + + private static void addFamilyToMap(FontFamily family) { + for(int i = 0; i < family.mNames.length; i ++) { + sFontFamilyMap.put(family.mNames[i], family); + } + } + + private static void initFontFamilyMap() { + sFontFamilyMap = new HashMap<String, FontFamily>(); + + FontFamily sansFamily = new FontFamily(); + sansFamily.mNames = sSansNames; + sansFamily.mNormalFileName = "DroidSans.ttf"; + sansFamily.mBoldFileName = "DroidSans-Bold.ttf"; + sansFamily.mItalicFileName = "DroidSans.ttf"; + sansFamily.mBoldItalicFileName = "DroidSans-Bold.ttf"; + addFamilyToMap(sansFamily); + + FontFamily serifFamily = new FontFamily(); + serifFamily.mNames = sSerifNames; + serifFamily.mNormalFileName = "DroidSerif-Regular.ttf"; + serifFamily.mBoldFileName = "DroidSerif-Bold.ttf"; + serifFamily.mItalicFileName = "DroidSerif-Italic.ttf"; + serifFamily.mBoldItalicFileName = "DroidSerif-BoldItalic.ttf"; + addFamilyToMap(serifFamily); + + FontFamily monoFamily = new FontFamily(); + monoFamily.mNames = sMonoNames; + monoFamily.mNormalFileName = "DroidSansMono.ttf"; + monoFamily.mBoldFileName = "DroidSansMono.ttf"; + monoFamily.mItalicFileName = "DroidSansMono.ttf"; + monoFamily.mBoldItalicFileName = "DroidSansMono.ttf"; + addFamilyToMap(monoFamily); + } + + static { + initFontFamilyMap(); + } + + static String getFontFileName(String familyName, Style style) { + FontFamily family = sFontFamilyMap.get(familyName); + if(family != null) { + switch(style) { + case NORMAL: + return family.mNormalFileName; + case BOLD: + return family.mBoldFileName; + case ITALIC: + return family.mItalicFileName; + case BOLD_ITALIC: + return family.mBoldItalicFileName; + } + } + // Fallback if we could not find the desired family + return "DroidSans.ttf"; + } + Font(int id, RenderScript rs) { super(id, rs); } + /** + * Takes a specific file name as an argument + */ static public Font create(RenderScript rs, Resources res, String fileName, int size) throws IllegalArgumentException { @@ -43,7 +135,7 @@ public class Font extends BaseObj { int fontId = rs.nFontCreateFromFile(fileName, size, dpi); if(fontId == 0) { - throw new IllegalStateException("Load loading a font"); + throw new IllegalStateException("Failed loading a font"); } Font rsFont = new Font(fontId, rs); @@ -55,4 +147,19 @@ public class Font extends BaseObj { return null; } + + /** + * Accepts one of the following family names as an argument + * and will attemp to produce the best match with a system font + * "sans-serif" "arial" "helvetica" "tahoma" "verdana" + * "serif" "times" "times new roman" "palatino" "georgia" "baskerville" + * "goudy" "fantasy" "cursive" "ITC Stone Serif" + * "monospace" "courier" "courier new" "monaco" + * Returns default font if no match could be found + */ + static public Font createFromFamily(RenderScript rs, Resources res, String familyName, Style fontStyle, int size) + throws IllegalArgumentException { + String fileName = getFontFileName(familyName, fontStyle); + return create(rs, res, fileName, size); + } } |