1dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka/* 2dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * Copyright (C) 2012 The Android Open Source Project 3dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * 4dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 5dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * you may not use this file except in compliance with the License. 6dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * You may obtain a copy of the License at 7dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * 8dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 9dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * 10dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 11dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 12dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * See the License for the specific language governing permissions and 14dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka * limitations under the License. 15dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka */ 16dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 17dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaokapackage com.android.inputmethod.keyboard.internal; 18dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 19dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaokaimport android.content.res.TypedArray; 20dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaokaimport android.graphics.Typeface; 21dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaokaimport android.util.SparseIntArray; 22dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 23dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaokaimport com.android.inputmethod.latin.R; 24e28eba5074664d5716b8e58b8d0a235746b261ebKen Wakasaimport com.android.inputmethod.latin.utils.ResourceUtils; 25dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 26a28a05e971cc242b338331a3b78276fa95188d19Tadashi G. Takaokapublic final class KeyVisualAttributes { 27dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final Typeface mTypeface; 28dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 29dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final float mLetterRatio; 30dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final int mLetterSize; 31dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final float mLabelRatio; 32dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final int mLabelSize; 33dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final float mLargeLetterRatio; 34dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final float mHintLetterRatio; 35dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final float mShiftedLetterHintRatio; 36dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final float mHintLabelRatio; 37dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final float mPreviewTextRatio; 38dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 39da500b7ec3093178922140cb67beca1e3578661dTadashi G. Takaoka public final int mTextColor; 40dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final int mTextInactivatedColor; 41dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final int mTextShadowColor; 4237ec0fe9840aeb3fdf4a5749945045f7a76fd16bTadashi G. Takaoka public final int mFunctionalTextColor; 43dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final int mHintLetterColor; 44dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final int mHintLabelColor; 45dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final int mShiftedLetterHintInactivatedColor; 46dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final int mShiftedLetterHintActivatedColor; 47dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public final int mPreviewTextColor; 48dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 492fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa public final float mHintLabelVerticalAdjustment; 500b5d12c6b4df6ddea2514a6646feb7db68e37ff4Tadashi G. Takaoka public final float mLabelOffCenterRatio; 510b5d12c6b4df6ddea2514a6646feb7db68e37ff4Tadashi G. Takaoka public final float mHintLabelOffCenterRatio; 522fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 53dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka private static final int[] VISUAL_ATTRIBUTE_IDS = { 54dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyTypeface, 55dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLetterSize, 56dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLabelSize, 57dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLargeLetterRatio, 58dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyHintLetterRatio, 59dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyShiftedLetterHintRatio, 60dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyHintLabelRatio, 61dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyPreviewTextRatio, 62dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyTextColor, 63dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyTextInactivatedColor, 64dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyTextShadowColor, 6537ec0fe9840aeb3fdf4a5749945045f7a76fd16bTadashi G. Takaoka R.styleable.Keyboard_Key_functionalTextColor, 66dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyHintLetterColor, 67dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyHintLabelColor, 68dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyShiftedLetterHintInactivatedColor, 69dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyShiftedLetterHintActivatedColor, 70dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyPreviewTextColor, 712fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa R.styleable.Keyboard_Key_keyHintLabelVerticalAdjustment, 720b5d12c6b4df6ddea2514a6646feb7db68e37ff4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLabelOffCenterRatio, 730b5d12c6b4df6ddea2514a6646feb7db68e37ff4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyHintLabelOffCenterRatio 74dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka }; 75dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka private static final SparseIntArray sVisualAttributeIds = new SparseIntArray(); 76dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka private static final int ATTR_DEFINED = 1; 77dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka private static final int ATTR_NOT_FOUND = 0; 78dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka static { 79dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka for (final int attrId : VISUAL_ATTRIBUTE_IDS) { 80dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka sVisualAttributeIds.put(attrId, ATTR_DEFINED); 81dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka } 82dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka } 83dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 84dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka public static KeyVisualAttributes newInstance(final TypedArray keyAttr) { 85dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka final int indexCount = keyAttr.getIndexCount(); 86dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka for (int i = 0; i < indexCount; i++) { 87dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka final int attrId = keyAttr.getIndex(i); 88dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka if (sVisualAttributeIds.get(attrId, ATTR_NOT_FOUND) == ATTR_NOT_FOUND) { 89dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka continue; 90dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka } 91dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka return new KeyVisualAttributes(keyAttr); 92dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka } 93dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka return null; 94dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka } 95dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 96dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka private KeyVisualAttributes(final TypedArray keyAttr) { 97dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyTypeface)) { 98dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mTypeface = Typeface.defaultFromStyle( 99dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka keyAttr.getInt(R.styleable.Keyboard_Key_keyTypeface, Typeface.NORMAL)); 100dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka } else { 101dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mTypeface = null; 102dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka } 103dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 104dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mLetterRatio = ResourceUtils.getFraction(keyAttr, 105dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLetterSize); 106dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mLetterSize = ResourceUtils.getDimensionPixelSize(keyAttr, 107dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLetterSize); 108dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mLabelRatio = ResourceUtils.getFraction(keyAttr, 109dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLabelSize); 110dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mLabelSize = ResourceUtils.getDimensionPixelSize(keyAttr, 111dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLabelSize); 112dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mLargeLetterRatio = ResourceUtils.getFraction(keyAttr, 113dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLargeLetterRatio); 114dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mHintLetterRatio = ResourceUtils.getFraction(keyAttr, 115dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyHintLetterRatio); 116dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mShiftedLetterHintRatio = ResourceUtils.getFraction(keyAttr, 117dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyShiftedLetterHintRatio); 118dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mHintLabelRatio = ResourceUtils.getFraction(keyAttr, 119dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyHintLabelRatio); 120dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mPreviewTextRatio = ResourceUtils.getFraction(keyAttr, 121dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyPreviewTextRatio); 122dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka 123da500b7ec3093178922140cb67beca1e3578661dTadashi G. Takaoka mTextColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyTextColor, 0); 124dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mTextInactivatedColor = keyAttr.getColor( 125dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyTextInactivatedColor, 0); 126dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mTextShadowColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyTextShadowColor, 0); 12737ec0fe9840aeb3fdf4a5749945045f7a76fd16bTadashi G. Takaoka mFunctionalTextColor = keyAttr.getColor(R.styleable.Keyboard_Key_functionalTextColor, 0); 128dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mHintLetterColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyHintLetterColor, 0); 129dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mHintLabelColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyHintLabelColor, 0); 130dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mShiftedLetterHintInactivatedColor = keyAttr.getColor( 131dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyShiftedLetterHintInactivatedColor, 0); 132dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mShiftedLetterHintActivatedColor = keyAttr.getColor( 133dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyShiftedLetterHintActivatedColor, 0); 134dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka mPreviewTextColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyPreviewTextColor, 0); 1352fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 1362fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa mHintLabelVerticalAdjustment = ResourceUtils.getFraction(keyAttr, 1372fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa R.styleable.Keyboard_Key_keyHintLabelVerticalAdjustment, 0.0f); 1380b5d12c6b4df6ddea2514a6646feb7db68e37ff4Tadashi G. Takaoka mLabelOffCenterRatio = ResourceUtils.getFraction(keyAttr, 1390b5d12c6b4df6ddea2514a6646feb7db68e37ff4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyLabelOffCenterRatio, 0.0f); 1400b5d12c6b4df6ddea2514a6646feb7db68e37ff4Tadashi G. Takaoka mHintLabelOffCenterRatio = ResourceUtils.getFraction(keyAttr, 1410b5d12c6b4df6ddea2514a6646feb7db68e37ff4Tadashi G. Takaoka R.styleable.Keyboard_Key_keyHintLabelOffCenterRatio, 0.0f); 142dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka } 143dc34da218a22489d92d1015e9e5dac8d951b89f4Tadashi G. Takaoka} 144