From ec5cda0ce6a3de3e77e7f40072a9fde04ac85e94 Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Thu, 29 Apr 2021 00:59:19 +0200 Subject: Slightly reduce the size of the bottom row --- srcs/juloo.keyboard2/KeyboardData.java | 70 +++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 31 deletions(-) (limited to 'srcs/juloo.keyboard2/KeyboardData.java') diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java index 2356954..ea226ee 100644 --- a/srcs/juloo.keyboard2/KeyboardData.java +++ b/srcs/juloo.keyboard2/KeyboardData.java @@ -6,15 +6,24 @@ import java.util.List; class KeyboardData { - private final List _rows; - private final float _keysWidth; + public final List rows; + /* Total width of the keyboard. Unit is abstract. */ + public final float keysWidth; + /* Total height of the keyboard. Unit is abstract. */ + public final float keysHeight; - public KeyboardData(List rows) + public KeyboardData(List rows_) { - float kpr = 0.f; - for (Row r : rows) kpr = Math.max(kpr, r.keysWidth()); - _rows = rows; - _keysWidth = kpr; + float kw = 0.f; + float kh = 0.f; + for (Row r : rows_) + { + kw = Math.max(kw, r.keysWidth); + kh += r.height + r.shift; + } + rows = rows_; + keysWidth = kw; + keysHeight = kh; } public static KeyboardData parse(XmlResourceParser parser) @@ -40,7 +49,6 @@ class KeyboardData throw new Exception("Unknow keyboard tag: " + tag); } } - return new KeyboardData(rows); } catch (Exception e) { @@ -49,36 +57,40 @@ class KeyboardData return new KeyboardData(rows); } - public List getRows() { return _rows; } - - public float getKeysWidth() { return _keysWidth; } - public KeyboardData removeKeys(MapKeys f) { - ArrayList rows = new ArrayList(); - for (Row r : _rows) - rows.add(r.removeKeys(f)); - return new KeyboardData(rows); + ArrayList rows_ = new ArrayList(); + for (Row r : rows) + rows_.add(r.removeKeys(f)); + return new KeyboardData(rows_); } public static class Row { - private final List _keys; + public final List keys; + /* Height of the row. Unit is abstract. */ + public final float height; + /* Extra empty space on the top. */ + public final float shift; /* Total width of very keys. Unit is abstract. */ - private final float _keysWidth; + private final float keysWidth; - public Row(List keys) + public Row(List keys_, float h, float s) { float kw = 0.f; - for (Key k : keys) kw += k.width + k.shift; - _keys = keys; - _keysWidth = kw; + for (Key k : keys_) kw += k.width + k.shift; + keys = keys_; + height = h; + shift = s; + keysWidth = kw; } public static Row parse(XmlResourceParser parser) throws Exception { ArrayList keys = new ArrayList(); int status; + float h = parser.getAttributeFloatValue(null, "height", 1f); + float shift = parser.getAttributeFloatValue(null, "shift", 0f); while ((status = parser.next()) != XmlResourceParser.END_TAG) { if (status == XmlResourceParser.START_TAG) @@ -90,19 +102,15 @@ class KeyboardData throw new Exception("Unknow row tag: " + tag); } } - return new Row(keys); + return new Row(keys, h, shift); } - public List getKeys() { return _keys; } - - public float keysWidth() { return _keysWidth; } - public Row removeKeys(MapKeys f) { - ArrayList keys = new ArrayList(); - for (Key k : _keys) - keys.add(k.removeKeys(f)); - return new Row(keys); + ArrayList keys_ = new ArrayList(); + for (Key k : keys) + keys_.add(k.removeKeys(f)); + return new Row(keys_, height, shift); } } -- cgit v1.2.3