diff options
author | 2012-09-12 02:01:46 -0700 | |
---|---|---|
committer | 2012-09-12 02:01:46 -0700 | |
commit | 57e95111138c94b7db7fec6749ca42be9fe92b2e (patch) | |
tree | ff11ba623234d5731989fb70ca8513c07512c52a /java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java | |
parent | 8d031a63b4d59d4d8670b4310dd9e18a0e03435a (diff) | |
parent | 9ad4b2a8942e1acad11d017ad1a97ad34f9b199a (diff) | |
download | latinime-57e95111138c94b7db7fec6749ca42be9fe92b2e.tar.gz latinime-57e95111138c94b7db7fec6749ca42be9fe92b2e.tar.xz latinime-57e95111138c94b7db7fec6749ca42be9fe92b2e.zip |
Merge "Use offscreen bitmap buffer to draw gesture preview trail" into jb-mr1-dev
Diffstat (limited to 'java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java b/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java index 95c9572b3..4311fa775 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java +++ b/java/src/com/android/inputmethod/keyboard/internal/GesturePreviewTrail.java @@ -17,9 +17,7 @@ package com.android.inputmethod.keyboard.internal; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; -import android.graphics.Xfermode; +import android.graphics.Rect; import android.os.SystemClock; import com.android.inputmethod.latin.Constants; @@ -118,17 +116,16 @@ final class GesturePreviewTrail { / params.mTrailLingerDuration, 0.0f); } - private final static Xfermode PORTER_DUFF_MODE_SRC = - new PorterDuffXfermode(PorterDuff.Mode.SRC); - /** * Draw gesture preview trail * @param canvas The canvas to draw the gesture preview trail * @param paint The paint object to be used to draw the gesture preview trail + * @param outBoundsRect the bounding box of this gesture trail drawing * @param params The drawing parameters of gesture preview trail * @return true if some gesture preview trails remain to be drawn */ - public boolean drawGestureTrail(final Canvas canvas, final Paint paint, final Params params) { + public boolean drawGestureTrail(final Canvas canvas, final Paint paint, + final Rect outBoundsRect, final Params params) { final int trailSize = mEventTimes.getLength(); if (trailSize == 0) { return false; @@ -149,12 +146,14 @@ final class GesturePreviewTrail { mTrailStartIndex = startIndex; if (startIndex < trailSize) { - int lastX = getXCoordValue(xCoords[startIndex]); - int lastY = yCoords[startIndex]; paint.setColor(params.mTrailColor); paint.setStyle(Paint.Style.STROKE); paint.setStrokeCap(Paint.Cap.ROUND); - paint.setXfermode(PORTER_DUFF_MODE_SRC); + int lastX = getXCoordValue(xCoords[startIndex]); + int lastY = yCoords[startIndex]; + float maxWidth = getWidth(sinceDown - eventTimes[startIndex], params); + // Initialize bounds rectangle. + outBoundsRect.set(lastX, lastY, lastX, lastY); for (int i = startIndex + 1; i < trailSize - 1; i++) { final int x = xCoords[i]; final int y = yCoords[i]; @@ -166,10 +165,16 @@ final class GesturePreviewTrail { final float width = getWidth(elapsedTime, params); paint.setStrokeWidth(width); canvas.drawLine(lastX, lastY, x, y, paint); + // Take union for the bounds. + outBoundsRect.union(x, y); + maxWidth = Math.max(maxWidth, width); } lastX = getXCoordValue(x); lastY = y; } + // Take care of trail line width. + final int inset = -((int)maxWidth + 1); + outBoundsRect.inset(inset, inset); } final int newSize = trailSize - startIndex; |