aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/keyboard/internal/Row.java
blob: 99d69ea7640566b3fd72def16d68241390f0dc5f (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
 * Copyright (C) 2010 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 com.android.inputmethod.keyboard.internal;

import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.R;

import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.util.Xml;

/**
 * Container for keys in the keyboard. All keys in a row are at the same Y-coordinate.
 * Some of the key size defaults can be overridden per row from what the {@link Keyboard}
 * defines.
 */
public class Row {
    /** Default width of a key in this row. */
    public final int mDefaultWidth;
    /** Default height of a key in this row. */
    public final int mDefaultHeight;
    /** Default horizontal gap between keys in this row. */
    public final int mDefaultHorizontalGap;
    /** Vertical gap following this row. */
    public final int mVerticalGap;
    /**
     * Edge flags for this row of keys. Possible values that can be assigned are
     * {@link Keyboard#EDGE_TOP EDGE_TOP} and {@link Keyboard#EDGE_BOTTOM EDGE_BOTTOM}
     */
    public final int mRowEdgeFlags;

    private final Keyboard mKeyboard;

    public Row(Resources res, Keyboard keyboard, XmlResourceParser parser) {
        this.mKeyboard = keyboard;
        final int keyboardWidth = keyboard.getDisplayWidth();
        final int keyboardHeight = keyboard.getKeyboardHeight();
        TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
                R.styleable.Keyboard);
        mDefaultWidth = KeyboardParser.getDimensionOrFraction(a,
                R.styleable.Keyboard_keyWidth, keyboardWidth, keyboard.getKeyWidth());
        mDefaultHeight = KeyboardParser.getDimensionOrFraction(a,
                R.styleable.Keyboard_rowHeight, keyboardHeight, keyboard.getRowHeight());
        mDefaultHorizontalGap = KeyboardParser.getDimensionOrFraction(a,
                R.styleable.Keyboard_horizontalGap, keyboardWidth, keyboard.getHorizontalGap());
        mVerticalGap = KeyboardParser.getDimensionOrFraction(a,
                R.styleable.Keyboard_verticalGap, keyboardHeight, keyboard.getVerticalGap());
        a.recycle();
        a = res.obtainAttributes(Xml.asAttributeSet(parser),
                R.styleable.Keyboard_Row);
        mRowEdgeFlags = a.getInt(R.styleable.Keyboard_Row_rowEdgeFlags, 0);
        a.recycle();
    }

    public Keyboard getKeyboard() {
        return mKeyboard;
    }
}