aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/AbstractDrawingPreview.java24
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java23
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java29
3 files changed, 50 insertions, 26 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/AbstractDrawingPreview.java b/java/src/com/android/inputmethod/keyboard/internal/AbstractDrawingPreview.java
index 501bde006..cf47b14b4 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/AbstractDrawingPreview.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/AbstractDrawingPreview.java
@@ -17,6 +17,7 @@
package com.android.inputmethod.keyboard.internal;
import android.graphics.Canvas;
+import android.view.View;
import com.android.inputmethod.keyboard.PointerTracker;
@@ -25,9 +26,18 @@ import com.android.inputmethod.keyboard.PointerTracker;
* GestureFloatingPrevewText, GestureTrail, and SlidingKeyInputPreview.
*/
public abstract class AbstractDrawingPreview {
+ private final View mDrawingView;
private boolean mPreviewEnabled;
- public void setPreviewEnabled(final boolean enabled) {
+ protected AbstractDrawingPreview(final View drawingView) {
+ mDrawingView = drawingView;
+ }
+
+ public final View getDrawingView() {
+ return mDrawingView;
+ }
+
+ public final void setPreviewEnabled(final boolean enabled) {
mPreviewEnabled = enabled;
}
@@ -35,6 +45,14 @@ public abstract class AbstractDrawingPreview {
return mPreviewEnabled;
}
+ public void setKeyboardGeometry(final int[] originCoords, final int width, final int height) {
+ // Default implementation is empty.
+ }
+
+ public void onDetachFromWindow() {
+ // Default implementation is empty.
+ }
+
/**
* Draws the preview
* @param canvas The canvas where the preview is drawn.
@@ -43,7 +61,7 @@ public abstract class AbstractDrawingPreview {
/**
* Set the position of the preview.
- * @param pt The new location of the preview is based on the points in PointerTracker pt.
+ * @param tracker The new location of the preview is based on the points in PointerTracker.
*/
- public abstract void setPreviewPosition(final PointerTracker pt);
+ public abstract void setPreviewPosition(final PointerTracker tracker);
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java b/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java
index 2c5bb598d..e21f86d44 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java
@@ -16,7 +16,6 @@
package com.android.inputmethod.keyboard.internal;
-import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
@@ -24,6 +23,7 @@ import android.graphics.Paint.Align;
import android.graphics.Rect;
import android.graphics.RectF;
import android.text.TextUtils;
+import android.view.View;
import com.android.inputmethod.keyboard.PointerTracker;
import com.android.inputmethod.latin.CoordinateUtils;
@@ -98,16 +98,18 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview {
PREVIEW_TEXT_ARRAY_CAPACITY);
protected SuggestedWords mSuggestedWords = SuggestedWords.EMPTY;
- protected final Context mContext;
public final int[] mLastPointerCoords = CoordinateUtils.newInstance();
- public GestureFloatingPreviewText(final TypedArray typedArray, final Context context) {
+ public GestureFloatingPreviewText(final View drawingView, final TypedArray typedArray) {
+ super(drawingView);
mParams = new GesturePreviewTextParams(typedArray);
mHighlightedWordIndex = 0;
- mContext = context;
}
public void setSuggetedWords(final SuggestedWords suggestedWords) {
+ if (!isPreviewEnabled()) {
+ return;
+ }
mSuggestedWords = suggestedWords;
updatePreviewPosition();
}
@@ -120,8 +122,13 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview {
}
@Override
- public void setPreviewPosition(final PointerTracker pt) {
- pt.getLastCoordinates(mLastPointerCoords);
+ public void setPreviewPosition(final PointerTracker tracker) {
+ final boolean needsToUpdateLastPointer =
+ tracker.isOldestTrackerInQueue() && isPreviewEnabled();
+ if (!needsToUpdateLastPointer) {
+ return;
+ }
+ tracker.getLastCoordinates(mLastPointerCoords);
updatePreviewPosition();
}
@@ -164,7 +171,7 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview {
final float rectWidth = textWidth + hPad * 2.0f;
final float rectHeight = textHeight + vPad * 2.0f;
- final int displayWidth = mContext.getResources().getDisplayMetrics().widthPixels;
+ final int displayWidth = getDrawingView().getResources().getDisplayMetrics().widthPixels;
final float rectX = Math.min(
Math.max(CoordinateUtils.x(mLastPointerCoords) - rectWidth / 2.0f, 0.0f),
displayWidth - rectWidth);
@@ -176,5 +183,7 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview {
final int textY = (int)(rectY + vPad) + textHeight;
mPreviewTextXArray.add(0, textX);
mPreviewTextYArray.add(0, textY);
+ // TODO: Should narrow the invalidate region.
+ getDrawingView().invalidate();
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java b/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java
index 3ffdfbaa5..4b0d4fb75 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java
@@ -41,7 +41,7 @@ import com.android.inputmethod.latin.SuggestedWords;
public final class PreviewPlacerView extends RelativeLayout {
private final int[] mKeyboardViewOrigin = CoordinateUtils.newInstance();
- // TODO: Consolidate gesture preview trail with {@link KeyboardView}
+ // TODO: Separate gesture preview trail drawing code into separate class.
private final SparseArray<GesturePreviewTrail> mGesturePreviewTrails =
CollectionUtils.newSparseArray();
private final Params mGesturePreviewTrailParams;
@@ -55,6 +55,7 @@ public final class PreviewPlacerView extends RelativeLayout {
private final Rect mOffscreenSrcRect = new Rect();
private final Rect mDirtyRect = new Rect();
private final Rect mGesturePreviewTrailBoundsRect = new Rect(); // per trail
+ // TODO: Move these AbstractDrawingPvreiew objects to MainKeyboardView.
private final GestureFloatingPreviewText mGestureFloatingPreviewText;
private boolean mShowSlidingKeyInputPreview;
private final int[] mRubberBandFrom = CoordinateUtils.newInstance();
@@ -104,7 +105,7 @@ public final class PreviewPlacerView extends RelativeLayout {
attrs, R.styleable.MainKeyboardView, defStyle, R.style.MainKeyboardView);
// TODO: mGestureFloatingPreviewText could be an instance of GestureFloatingPreviewText or
// MultiGesturePreviewText, depending on the user's choice in the settings.
- mGestureFloatingPreviewText = new GestureFloatingPreviewText(mainKeyboardViewAttr, context);
+ mGestureFloatingPreviewText = new GestureFloatingPreviewText(this, mainKeyboardViewAttr);
mGesturePreviewTrailParams = new Params(mainKeyboardViewAttr);
mainKeyboardViewAttr.recycle();
@@ -120,11 +121,14 @@ public final class PreviewPlacerView extends RelativeLayout {
setLayerType(LAYER_TYPE_HARDWARE, layerPaint);
}
- public void setKeyboardViewGeometry(final int[] originCoords, final int w, final int h) {
+ public void setKeyboardViewGeometry(final int[] originCoords, final int width,
+ final int height) {
CoordinateUtils.copy(mKeyboardViewOrigin, originCoords);
- mOffscreenOffsetY = (int)(h * GestureStroke.EXTRA_GESTURE_TRAIL_AREA_ABOVE_KEYBOARD_RATIO);
- mOffscreenWidth = w;
- mOffscreenHeight = mOffscreenOffsetY + h;
+ mGestureFloatingPreviewText.setKeyboardGeometry(originCoords, width, height);
+ mOffscreenOffsetY = (int)(
+ height * GestureStroke.EXTRA_GESTURE_TRAIL_AREA_ABOVE_KEYBOARD_RATIO);
+ mOffscreenWidth = width;
+ mOffscreenHeight = mOffscreenOffsetY + height;
}
public void setGesturePreviewMode(final boolean drawsGesturePreviewTrail,
@@ -134,11 +138,7 @@ public final class PreviewPlacerView extends RelativeLayout {
}
public void invalidatePointer(final PointerTracker tracker) {
- final boolean needsToUpdateLastPointer =
- tracker.isOldestTrackerInQueue() && mGestureFloatingPreviewText.isPreviewEnabled();
- if (needsToUpdateLastPointer) {
- mGestureFloatingPreviewText.setPreviewPosition(tracker);
- }
+ mGestureFloatingPreviewText.setPreviewPosition(tracker);
if (mDrawsGesturePreviewTrail) {
GesturePreviewTrail trail;
@@ -150,10 +150,8 @@ public final class PreviewPlacerView extends RelativeLayout {
}
}
trail.addStroke(tracker.getGestureStrokeWithPreviewPoints(), tracker.getDownTime());
- }
- // TODO: Should narrow the invalidate region.
- if (mDrawsGesturePreviewTrail || needsToUpdateLastPointer) {
+ // TODO: Should narrow the invalidate region.
invalidate();
}
}
@@ -175,6 +173,7 @@ public final class PreviewPlacerView extends RelativeLayout {
@Override
protected void onDetachedFromWindow() {
+ mGestureFloatingPreviewText.onDetachFromWindow();
freeOffscreenBuffer();
}
@@ -254,9 +253,7 @@ public final class PreviewPlacerView extends RelativeLayout {
}
public void setGestureFloatingPreviewText(final SuggestedWords suggestedWords) {
- if (!mGestureFloatingPreviewText.isPreviewEnabled()) return;
mGestureFloatingPreviewText.setSuggetedWords(suggestedWords);
- invalidate();
}
private void drawSlidingKeyInputPreview(final Canvas canvas) {