Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 359c35e0 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Add CoordinateUtils class

Change-Id: I23784117f77da54ee2a0670e65d86e26d762a687
parent 2200dbbf
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardView;
import com.android.inputmethod.latin.CollectionUtils;
import com.android.inputmethod.latin.CoordinateUtils;

/**
 * Exposes a virtual view sub-tree for {@link KeyboardView} and generates
@@ -62,7 +63,7 @@ public final class AccessibilityEntityProvider extends AccessibilityNodeProvider
    private final Rect mTempBoundsInScreen = new Rect();

    /** The parent view's cached on-screen location. */
    private final int[] mParentLocation = new int[2];
    private final int[] mParentLocation = CoordinateUtils.newInstance();

    /** The virtual view identifier for the focused node. */
    private int mAccessibilityFocusedView = UNDEFINED;
@@ -180,7 +181,8 @@ public final class AccessibilityEntityProvider extends AccessibilityNodeProvider

            // Calculate the key's in-screen bounds.
            mTempBoundsInScreen.set(boundsInParent);
            mTempBoundsInScreen.offset(mParentLocation[0], mParentLocation[1]);
            mTempBoundsInScreen.offset(
                    CoordinateUtils.x(mParentLocation), CoordinateUtils.y(mParentLocation));

            final Rect boundsInScreen = mTempBoundsInScreen;

+10 −6
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import com.android.inputmethod.keyboard.internal.KeyVisualAttributes;
import com.android.inputmethod.keyboard.internal.PreviewPlacerView;
import com.android.inputmethod.latin.CollectionUtils;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.CoordinateUtils;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.StaticInnerHandlerWrapper;
@@ -134,7 +135,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {

    // Preview placer view
    private final PreviewPlacerView mPreviewPlacerView;
    private final int[] mCoordinates = new int[2];
    private final int[] mCoordinates = CoordinateUtils.newInstance();

    // Key preview
    private static final int PREVIEW_ALPHA = 240;
@@ -832,10 +833,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
            // In transient state.
            return;
        }
        final int[] viewOrigin = new int[2];
        final int[] viewOrigin = CoordinateUtils.newInstance();
        getLocationInWindow(viewOrigin);
        final DisplayMetrics dm = getResources().getDisplayMetrics();
        if (viewOrigin[1] < dm.heightPixels / 4) {
        if (CoordinateUtils.y(viewOrigin) < dm.heightPixels / 4) {
            // In transient state.
            return;
        }
@@ -850,7 +851,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
            Log.w(TAG, "Cannot find android.R.id.content view to add PreviewPlacerView");
        } else {
            windowContentView.addView(mPreviewPlacerView);
            mPreviewPlacerView.setKeyboardViewGeometry(viewOrigin[0], viewOrigin[1], width, height);
            mPreviewPlacerView.setKeyboardViewGeometry(
                    CoordinateUtils.x(viewOrigin), CoordinateUtils.y(viewOrigin), width, height);
        }
    }

@@ -940,7 +942,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
        // parent key. If it doesn't fit in this {@link KeyboardView}, it is moved inward to fit and
        // the left/right background is used if such background is specified.
        final int statePosition;
        int previewX = key.getDrawX() - (previewWidth - keyDrawWidth) / 2 + mCoordinates[0];
        int previewX = key.getDrawX() - (previewWidth - keyDrawWidth) / 2
                + CoordinateUtils.x(mCoordinates);
        if (previewX < 0) {
            previewX = 0;
            statePosition = STATE_LEFT;
@@ -952,7 +955,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
        }
        // The key preview is placed vertically above the top edge of the parent key with an
        // arbitrary offset.
        final int previewY = key.mY - previewHeight + mPreviewOffset + mCoordinates[1];
        final int previewY = key.mY - previewHeight + mPreviewOffset
                + CoordinateUtils.y(mCoordinates);

        if (background != null) {
            final int hasMoreKeys = (key.mMoreKeys != null) ? STATE_HAS_MOREKEYS : STATE_NORMAL;
+3 −2
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.widget.PopupWindow;
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.CoordinateUtils;
import com.android.inputmethod.latin.InputPointers;
import com.android.inputmethod.latin.R;

@@ -34,7 +35,7 @@ import com.android.inputmethod.latin.R;
 * detecting key presses and touch movements.
 */
public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel {
    private final int[] mCoordinates = new int[2];
    private final int[] mCoordinates = CoordinateUtils.newInstance();

    private final KeyDetector mKeyDetector;

@@ -169,7 +170,7 @@ public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeys
        window.setHeight(container.getMeasuredHeight());
        parentView.getLocationInWindow(mCoordinates);
        window.showAtLocation(parentView, Gravity.NO_GRAVITY,
                x + mCoordinates[0], y + mCoordinates[1]);
                x + CoordinateUtils.x(mCoordinates), y + CoordinateUtils.y(mCoordinates));

        mOriginX = x + container.getPaddingLeft();
        mOriginY = y + container.getPaddingTop();
+39 −0
Original line number Diff line number Diff line
/*
 * 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;

public final class CoordinateUtils {
    private static final int INDEX_X = 0;
    private static final int INDEX_Y = 1;
    private static final int ARRAY_SIZE = INDEX_Y + 1;

    private CoordinateUtils() {
        // This utility class is not publicly instantiable.
    }

    public static int[] newInstance() {
        return new int[ARRAY_SIZE];
    }

    public static int x(final int[] coords) {
        return coords[INDEX_X];
    }

    public static int y(final int[] coords) {
        return coords[INDEX_Y];
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.inputmethod.keyboard.PointerTracker;
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler;
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
import com.android.inputmethod.latin.CoordinateUtils;
import com.android.inputmethod.latin.R;

/**
@@ -41,7 +42,7 @@ import com.android.inputmethod.latin.R;
 * key presses and touch movements.
 */
public final class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
    private final int[] mCoordinates = new int[2];
    private final int[] mCoordinates = CoordinateUtils.newInstance();

    final KeyDetector mModalPanelKeyDetector;
    private final KeyDetector mSlidingPanelKeyDetector;
@@ -163,7 +164,7 @@ public final class MoreSuggestionsView extends KeyboardView implements MoreKeysP
        window.setHeight(container.getMeasuredHeight());
        parentView.getLocationInWindow(mCoordinates);
        window.showAtLocation(parentView, Gravity.NO_GRAVITY,
                x + mCoordinates[0], y + mCoordinates[1]);
                x + CoordinateUtils.x(mCoordinates), y + CoordinateUtils.y(mCoordinates));

        mOriginX = x + container.getPaddingLeft();
        mOriginY = y + container.getPaddingTop();