/* * Copyright (C) 2012 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.latin.utils; import java.util.Arrays; public final class CoordinateUtils { private static final int INDEX_X = 0; private static final int INDEX_Y = 1; private static final int ELEMENT_SIZE = INDEX_Y + 1; private CoordinateUtils() { // This utility class is not publicly instantiable. } public static int[] newInstance() { return new int[ELEMENT_SIZE]; } public static int x(final int[] coords) { return coords[INDEX_X]; } public static int y(final int[] coords) { return coords[INDEX_Y]; } public static void set(final int[] coords, final int x, final int y) { coords[INDEX_X] = x; coords[INDEX_Y] = y; } public static void copy(final int[] destination, final int[] source) { destination[INDEX_X] = source[INDEX_X]; destination[INDEX_Y] = source[INDEX_Y]; } public static int[] newCoordinateArray(final int arraySize) { return new int[ELEMENT_SIZE * arraySize]; } public static int[] newCoordinateArray(final int arraySize, final int defaultX, final int defaultY) { final int[] result = new int[ELEMENT_SIZE * arraySize]; for (int i = 0; i < arraySize; ++i) { setXYInArray(result, i, defaultX, defaultY); } return result; } public static int xFromArray(final int[] coordsArray, final int index) { return coordsArray[ELEMENT_SIZE * index + INDEX_X]; } public static int yFromArray(final int[] coordsArray, final int index) { return coordsArray[ELEMENT_SIZE * index + INDEX_Y]; } public static int[] coordinateFromArray(final int[] coordsArray, final int index) { final int baseIndex = ELEMENT_SIZE * index; return Arrays.copyOfRange(coordsArray, baseIndex, baseIndex + ELEMENT_SIZE); } public static void setXYInArray(final int[] coordsArray, final int index, final int x, final int y) { final int baseIndex = ELEMENT_SIZE * index; coordsArray[baseIndex + INDEX_X] = x; coordsArray[baseIndex + INDEX_Y] = y; } public static void setCoordinateInArray(final int[] coordsArray, final int index, final int[] coords) { final int baseIndex = ELEMENT_SIZE * index; coordsArray[baseIndex + INDEX_X] = coords[INDEX_X]; coordsArray[baseIndex + INDEX_Y] = coords[INDEX_Y]; } public static void copyArray(final int[] destination, final int[] source) { System.arraycopy(source, 0, destination, 0, source.length); } }