FontFamily.java revision d573794d83a049fe59e289944f0cd77406dd776a
11a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien/* 21a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * Copyright (C) 2014 The Android Open Source Project 31a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * 41a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * Licensed under the Apache License, Version 2.0 (the "License"); 51a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * you may not use this file except in compliance with the License. 61a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * You may obtain a copy of the License at 71a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * 81a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * http://www.apache.org/licenses/LICENSE-2.0 91a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * 101a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * Unless required by applicable law or agreed to in writing, software 111a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * distributed under the License is distributed on an "AS IS" BASIS, 121a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * See the License for the specific language governing permissions and 141a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * limitations under the License. 151a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien */ 161a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien 171a73f732f91e97c9c66b808c245ddda36a10e987Raph Levienpackage android.graphics; 181a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien 19d573794d83a049fe59e289944f0cd77406dd776aRaph Levienimport android.content.res.AssetManager; 20d573794d83a049fe59e289944f0cd77406dd776aRaph Levien 211a73f732f91e97c9c66b808c245ddda36a10e987Raph Levienimport java.io.File; 221a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien 231a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien/** 241a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * A family of typefaces with different styles. 251a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * 261a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien * @hide 271a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien */ 281a73f732f91e97c9c66b808c245ddda36a10e987Raph Levienpublic class FontFamily { 299a5b61ccc83303ceeec2059f58c1977af9faa9e3Raph Levien /** 309a5b61ccc83303ceeec2059f58c1977af9faa9e3Raph Levien * @hide 319a5b61ccc83303ceeec2059f58c1977af9faa9e3Raph Levien */ 321a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien public long mNativePtr; 339a5b61ccc83303ceeec2059f58c1977af9faa9e3Raph Levien 341a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien public FontFamily() { 35f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien mNativePtr = nCreateFamily(null, 0); 369a5b61ccc83303ceeec2059f58c1977af9faa9e3Raph Levien if (mNativePtr == 0) { 37f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien throw new IllegalStateException("error creating native FontFamily"); 38f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien } 39f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien } 40f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien 41f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien public FontFamily(String lang, String variant) { 42f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien int varEnum = 0; 43f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien if ("compact".equals(variant)) { 44f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien varEnum = 1; 45f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien } else if ("elegant".equals(variant)) { 46f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien varEnum = 2; 47f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien } 48f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien mNativePtr = nCreateFamily(lang, varEnum); 49f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien if (mNativePtr == 0) { 50f9e3d311275c37fe5f2562993687a1627780a6d0Raph Levien throw new IllegalStateException("error creating native FontFamily"); 519a5b61ccc83303ceeec2059f58c1977af9faa9e3Raph Levien } 521a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien } 5315cf4757dc0099301662f8a26da561434cc07cfaRaph Levien 5415cf4757dc0099301662f8a26da561434cc07cfaRaph Levien @Override 5515cf4757dc0099301662f8a26da561434cc07cfaRaph Levien protected void finalize() throws Throwable { 5615cf4757dc0099301662f8a26da561434cc07cfaRaph Levien try { 5715cf4757dc0099301662f8a26da561434cc07cfaRaph Levien nUnrefFamily(mNativePtr); 5815cf4757dc0099301662f8a26da561434cc07cfaRaph Levien } finally { 5915cf4757dc0099301662f8a26da561434cc07cfaRaph Levien super.finalize(); 6015cf4757dc0099301662f8a26da561434cc07cfaRaph Levien } 6115cf4757dc0099301662f8a26da561434cc07cfaRaph Levien } 621a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien 63d573794d83a049fe59e289944f0cd77406dd776aRaph Levien public boolean addFont(String path) { 64d573794d83a049fe59e289944f0cd77406dd776aRaph Levien return nAddFont(mNativePtr, path); 65d573794d83a049fe59e289944f0cd77406dd776aRaph Levien } 66d573794d83a049fe59e289944f0cd77406dd776aRaph Levien 67d573794d83a049fe59e289944f0cd77406dd776aRaph Levien public boolean addFontFromAsset(AssetManager mgr, String path) { 68d573794d83a049fe59e289944f0cd77406dd776aRaph Levien return nAddFontFromAsset(mNativePtr, mgr, path); 691a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien } 701a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien 71d573794d83a049fe59e289944f0cd77406dd776aRaph Levien private static native long nCreateFamily(String lang, int variant); 72d573794d83a049fe59e289944f0cd77406dd776aRaph Levien private static native void nUnrefFamily(long nativePtr); 73d573794d83a049fe59e289944f0cd77406dd776aRaph Levien private static native boolean nAddFont(long nativeFamily, String path); 74d573794d83a049fe59e289944f0cd77406dd776aRaph Levien private static native boolean nAddFontFromAsset(long nativeFamily, AssetManager mgr, 75d573794d83a049fe59e289944f0cd77406dd776aRaph Levien String path); 761a73f732f91e97c9c66b808c245ddda36a10e987Raph Levien} 77