Loading java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java +31 −45 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.view.View; import com.android.inputmethod.keyboard.PointerTracker; import com.android.inputmethod.latin.CoordinateUtils; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.ResizableIntArray; import com.android.inputmethod.latin.SuggestedWords; /** Loading @@ -44,16 +43,17 @@ import com.android.inputmethod.latin.SuggestedWords; * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewRoundRadius */ public class GestureFloatingPreviewText extends AbstractDrawingPreview { private static final class GesturePreviewTextParams { public final int mGesturePreviewTextSize; public final int mGesturePreviewTextColor; protected static final class GesturePreviewTextParams { public final int mGesturePreviewTextOffset; public final int mGesturePreviewTextHeight; public final int mGesturePreviewColor; public final float mGesturePreviewHorizontalPadding; public final float mGesturePreviewVerticalPadding; public final float mGesturePreviewRoundRadius; public final Paint mTextPaint; private final int mGesturePreviewTextSize; private final int mGesturePreviewTextColor; private final int mGesturePreviewColor; private final Paint mPaint = new Paint(); private static final char[] TEXT_HEIGHT_REFERENCE_CHAR = { 'M' }; Loading @@ -73,37 +73,36 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { mGesturePreviewRoundRadius = mainKeyboardViewAttr.getDimension( R.styleable.MainKeyboardView_gestureFloatingPreviewRoundRadius, 0.0f); final Paint textPaint = new Paint(); textPaint.setAntiAlias(true); textPaint.setTextAlign(Align.CENTER); textPaint.setTextSize(mGesturePreviewTextSize); mTextPaint = textPaint; final Paint textPaint = getTextPaint(); final Rect textRect = new Rect(); textPaint.getTextBounds(TEXT_HEIGHT_REFERENCE_CHAR, 0, 1, textRect); mGesturePreviewTextHeight = textRect.height(); } } protected final GesturePreviewTextParams mParams; protected int mPreviewWordNum; protected final RectF mGesturePreviewRectangle = new RectF(); protected int mHighlightedWordIndex; public Paint getTextPaint() { mPaint.setAntiAlias(true); mPaint.setTextAlign(Align.CENTER); mPaint.setTextSize(mGesturePreviewTextSize); mPaint.setColor(mGesturePreviewTextColor); return mPaint; } private static final int PREVIEW_TEXT_ARRAY_CAPACITY = 10; // These variables store the positions of preview words. In multi-preview mode, the gesture // floating preview at most shows PREVIEW_TEXT_ARRAY_CAPACITY words. protected final ResizableIntArray mPreviewTextXArray = new ResizableIntArray( PREVIEW_TEXT_ARRAY_CAPACITY); protected final ResizableIntArray mPreviewTextYArray = new ResizableIntArray( PREVIEW_TEXT_ARRAY_CAPACITY); public Paint getBackgroundPaint() { mPaint.setColor(mGesturePreviewColor); return mPaint; } } protected SuggestedWords mSuggestedWords = SuggestedWords.EMPTY; public final int[] mLastPointerCoords = CoordinateUtils.newInstance(); private final GesturePreviewTextParams mParams; private final RectF mGesturePreviewRectangle = new RectF(); private int mPreviewTextX; private int mPreviewTextY; private SuggestedWords mSuggestedWords = SuggestedWords.EMPTY; private final int[] mLastPointerCoords = CoordinateUtils.newInstance(); public GestureFloatingPreviewText(final View drawingView, final TypedArray typedArray) { super(drawingView); mParams = new GesturePreviewTextParams(typedArray); mHighlightedWordIndex = 0; } public void setSuggetedWords(final SuggestedWords suggestedWords) { Loading @@ -114,13 +113,6 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { updatePreviewPosition(); } protected void drawText(final Canvas canvas, final String text, final float textX, final float textY, final int color) { final Paint paint = mParams.mTextPaint; paint.setColor(color); canvas.drawText(text, textX, textY, paint); } @Override public void setPreviewPosition(final PointerTracker tracker) { final boolean needsToUpdateLastPointer = Loading @@ -142,14 +134,11 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { || TextUtils.isEmpty(mSuggestedWords.getWord(0))) { return; } final Paint paint = mParams.mTextPaint; paint.setColor(mParams.mGesturePreviewColor); final float round = mParams.mGesturePreviewRoundRadius; canvas.drawRoundRect(mGesturePreviewRectangle, round, round, paint); canvas.drawRoundRect( mGesturePreviewRectangle, round, round, mParams.getBackgroundPaint()); final String text = mSuggestedWords.getWord(0); final int textX = mPreviewTextXArray.get(0); final int textY = mPreviewTextYArray.get(0); drawText(canvas, text, textX, textY, mParams.mGesturePreviewTextColor); canvas.drawText(text, mPreviewTextX, mPreviewTextY, mParams.getTextPaint()); } /** Loading @@ -162,11 +151,10 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { } final String text = mSuggestedWords.getWord(0); final Paint paint = mParams.mTextPaint; final RectF rectangle = mGesturePreviewRectangle; final int textHeight = mParams.mGesturePreviewTextHeight; final float textWidth = paint.measureText(text); final float textWidth = mParams.getTextPaint().measureText(text); final float hPad = mParams.mGesturePreviewHorizontalPadding; final float vPad = mParams.mGesturePreviewVerticalPadding; final float rectWidth = textWidth + hPad * 2.0f; Loading @@ -180,10 +168,8 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { - mParams.mGesturePreviewTextOffset - rectHeight; rectangle.set(rectX, rectY, rectX + rectWidth, rectY + rectHeight); final int textX = (int)(rectX + hPad + textWidth / 2.0f); final int textY = (int)(rectY + vPad) + textHeight; mPreviewTextXArray.add(0, textX); mPreviewTextYArray.add(0, textY); mPreviewTextX = (int)(rectX + hPad + textWidth / 2.0f); mPreviewTextY = (int)(rectY + vPad) + textHeight; // TODO: Should narrow the invalidate region. getDrawingView().invalidate(); } Loading Loading
java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java +31 −45 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.view.View; import com.android.inputmethod.keyboard.PointerTracker; import com.android.inputmethod.latin.CoordinateUtils; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.ResizableIntArray; import com.android.inputmethod.latin.SuggestedWords; /** Loading @@ -44,16 +43,17 @@ import com.android.inputmethod.latin.SuggestedWords; * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewRoundRadius */ public class GestureFloatingPreviewText extends AbstractDrawingPreview { private static final class GesturePreviewTextParams { public final int mGesturePreviewTextSize; public final int mGesturePreviewTextColor; protected static final class GesturePreviewTextParams { public final int mGesturePreviewTextOffset; public final int mGesturePreviewTextHeight; public final int mGesturePreviewColor; public final float mGesturePreviewHorizontalPadding; public final float mGesturePreviewVerticalPadding; public final float mGesturePreviewRoundRadius; public final Paint mTextPaint; private final int mGesturePreviewTextSize; private final int mGesturePreviewTextColor; private final int mGesturePreviewColor; private final Paint mPaint = new Paint(); private static final char[] TEXT_HEIGHT_REFERENCE_CHAR = { 'M' }; Loading @@ -73,37 +73,36 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { mGesturePreviewRoundRadius = mainKeyboardViewAttr.getDimension( R.styleable.MainKeyboardView_gestureFloatingPreviewRoundRadius, 0.0f); final Paint textPaint = new Paint(); textPaint.setAntiAlias(true); textPaint.setTextAlign(Align.CENTER); textPaint.setTextSize(mGesturePreviewTextSize); mTextPaint = textPaint; final Paint textPaint = getTextPaint(); final Rect textRect = new Rect(); textPaint.getTextBounds(TEXT_HEIGHT_REFERENCE_CHAR, 0, 1, textRect); mGesturePreviewTextHeight = textRect.height(); } } protected final GesturePreviewTextParams mParams; protected int mPreviewWordNum; protected final RectF mGesturePreviewRectangle = new RectF(); protected int mHighlightedWordIndex; public Paint getTextPaint() { mPaint.setAntiAlias(true); mPaint.setTextAlign(Align.CENTER); mPaint.setTextSize(mGesturePreviewTextSize); mPaint.setColor(mGesturePreviewTextColor); return mPaint; } private static final int PREVIEW_TEXT_ARRAY_CAPACITY = 10; // These variables store the positions of preview words. In multi-preview mode, the gesture // floating preview at most shows PREVIEW_TEXT_ARRAY_CAPACITY words. protected final ResizableIntArray mPreviewTextXArray = new ResizableIntArray( PREVIEW_TEXT_ARRAY_CAPACITY); protected final ResizableIntArray mPreviewTextYArray = new ResizableIntArray( PREVIEW_TEXT_ARRAY_CAPACITY); public Paint getBackgroundPaint() { mPaint.setColor(mGesturePreviewColor); return mPaint; } } protected SuggestedWords mSuggestedWords = SuggestedWords.EMPTY; public final int[] mLastPointerCoords = CoordinateUtils.newInstance(); private final GesturePreviewTextParams mParams; private final RectF mGesturePreviewRectangle = new RectF(); private int mPreviewTextX; private int mPreviewTextY; private SuggestedWords mSuggestedWords = SuggestedWords.EMPTY; private final int[] mLastPointerCoords = CoordinateUtils.newInstance(); public GestureFloatingPreviewText(final View drawingView, final TypedArray typedArray) { super(drawingView); mParams = new GesturePreviewTextParams(typedArray); mHighlightedWordIndex = 0; } public void setSuggetedWords(final SuggestedWords suggestedWords) { Loading @@ -114,13 +113,6 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { updatePreviewPosition(); } protected void drawText(final Canvas canvas, final String text, final float textX, final float textY, final int color) { final Paint paint = mParams.mTextPaint; paint.setColor(color); canvas.drawText(text, textX, textY, paint); } @Override public void setPreviewPosition(final PointerTracker tracker) { final boolean needsToUpdateLastPointer = Loading @@ -142,14 +134,11 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { || TextUtils.isEmpty(mSuggestedWords.getWord(0))) { return; } final Paint paint = mParams.mTextPaint; paint.setColor(mParams.mGesturePreviewColor); final float round = mParams.mGesturePreviewRoundRadius; canvas.drawRoundRect(mGesturePreviewRectangle, round, round, paint); canvas.drawRoundRect( mGesturePreviewRectangle, round, round, mParams.getBackgroundPaint()); final String text = mSuggestedWords.getWord(0); final int textX = mPreviewTextXArray.get(0); final int textY = mPreviewTextYArray.get(0); drawText(canvas, text, textX, textY, mParams.mGesturePreviewTextColor); canvas.drawText(text, mPreviewTextX, mPreviewTextY, mParams.getTextPaint()); } /** Loading @@ -162,11 +151,10 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { } final String text = mSuggestedWords.getWord(0); final Paint paint = mParams.mTextPaint; final RectF rectangle = mGesturePreviewRectangle; final int textHeight = mParams.mGesturePreviewTextHeight; final float textWidth = paint.measureText(text); final float textWidth = mParams.getTextPaint().measureText(text); final float hPad = mParams.mGesturePreviewHorizontalPadding; final float vPad = mParams.mGesturePreviewVerticalPadding; final float rectWidth = textWidth + hPad * 2.0f; Loading @@ -180,10 +168,8 @@ public class GestureFloatingPreviewText extends AbstractDrawingPreview { - mParams.mGesturePreviewTextOffset - rectHeight; rectangle.set(rectX, rectY, rectX + rectWidth, rectY + rectHeight); final int textX = (int)(rectX + hPad + textWidth / 2.0f); final int textY = (int)(rectY + vPad) + textHeight; mPreviewTextXArray.add(0, textX); mPreviewTextYArray.add(0, textY); mPreviewTextX = (int)(rectX + hPad + textWidth / 2.0f); mPreviewTextY = (int)(rectY + vPad) + textHeight; // TODO: Should narrow the invalidate region. getDrawingView().invalidate(); } Loading