Skip to content
Snippets Groups Projects
Commit 7389c601 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Add InputPointers.append() method"

parents e4498929 1087c53f
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,7 @@ package com.android.inputmethod.latin;
import java.util.Arrays;
// TODO: Add unit test
public class InputPointers {
private final ScalableIntArray mXCoordinates = new ScalableIntArray();
private final ScalableIntArray mYCoordinates = new ScalableIntArray();
......@@ -52,6 +53,25 @@ public class InputPointers {
mTimes.copy(ip.mTimes);
}
/**
* Append the pointers in the specified {@link InputPointers} to the end of this.
* @param src the source {@link InputPointers} to append the pointers.
* @param startPos the starting index of the pointers in {@code src}.
* @param length the number of pointers to be appended.
*/
public void append(InputPointers src, int startPos, int length) {
final int currentLength = getPointerSize();
final int newLength = currentLength + length;
mXCoordinates.ensureCapacity(newLength);
mYCoordinates.ensureCapacity(newLength);
mPointerIds.ensureCapacity(newLength);
mTimes.ensureCapacity(newLength);
System.arraycopy(src.getXCoordinates(), startPos, getXCoordinates(), currentLength, length);
System.arraycopy(src.getYCoordinates(), startPos, getYCoordinates(), currentLength, length);
System.arraycopy(src.getPointerIds(), startPos, getPointerIds(), currentLength, length);
System.arraycopy(src.getTimes(), startPos, getTimes(), currentLength, length);
}
public void reset() {
mXCoordinates.reset();
mYCoordinates.reset();
......@@ -64,19 +84,19 @@ public class InputPointers {
}
public int[] getXCoordinates() {
return mXCoordinates.mArray;
return mXCoordinates.getPrimitiveArray();
}
public int[] getYCoordinates() {
return mYCoordinates.mArray;
return mYCoordinates.getPrimitiveArray();
}
public int[] getPointerIds() {
return mPointerIds.mArray;
return mPointerIds.getPrimitiveArray();
}
public int[] getTimes() {
return mTimes.mArray;
return mTimes.getPrimitiveArray();
}
private static class ScalableIntArray {
......@@ -98,14 +118,24 @@ public class InputPointers {
}
public void add(int val) {
if (mLength >= mArray.length) {
final int[] newArray = new int[mLength * 2];
System.arraycopy(mArray, 0, newArray, 0, mLength);
}
ensureCapacity(mLength);
mArray[mLength] = val;
++mLength;
}
public void ensureCapacity(int minimumCapacity) {
if (mArray.length < minimumCapacity) {
final int nextCapacity = mArray.length * 2;
grow(minimumCapacity > nextCapacity ? minimumCapacity : nextCapacity);
}
}
private void grow(int newCapacity) {
final int[] newArray = new int[newCapacity];
System.arraycopy(mArray, 0, newArray, 0, mLength);
mArray = newArray;
}
public int getLength() {
return mLength;
}
......@@ -121,6 +151,7 @@ public class InputPointers {
public void copy(ScalableIntArray ip) {
mArray = Arrays.copyOf(ip.mArray, ip.mArray.length);
mLength = ip.mLength;
}
public void set(ScalableIntArray ip) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment