1e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka/* 2e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * Copyright (C) 2013 The Android Open Source Project 3e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * 4e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 5e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * you may not use this file except in compliance with the License. 6e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * You may obtain a copy of the License at 7e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * 8e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 9e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * 10e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 11e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 12e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * See the License for the specific language governing permissions and 14e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * limitations under the License. 15e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka */ 16e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka 17e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaokapackage com.android.inputmethod.keyboard.internal; 18e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka 19e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaokaimport android.content.res.TypedArray; 20e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka 21e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaokaimport com.android.inputmethod.latin.R; 22e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka 23e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka/** 24e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * This class holds parameters to control how a gesture trail is drawn and animated on the screen. 25e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * 26e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * On the other hand, {@link GestureStrokeDrawingParams} class controls how each gesture stroke is 27e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * sampled and interpolated. This class controls how those gesture strokes are displayed as a 28e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * gesture trail and animated on the screen. 29e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * 30e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * @attr ref R.styleable#MainKeyboardView_gestureTrailFadeoutStartDelay 31e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * @attr ref R.styleable#MainKeyboardView_gestureTrailFadeoutDuration 32e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * @attr ref R.styleable#MainKeyboardView_gestureTrailUpdateInterval 33e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * @attr ref R.styleable#MainKeyboardView_gestureTrailColor 34e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka * @attr ref R.styleable#MainKeyboardView_gestureTrailWidth 35e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka */ 36e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaokafinal class GestureTrailDrawingParams { 37e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka private static final int FADEOUT_START_DELAY_FOR_DEBUG = 2000; // millisecond 38e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka private static final int FADEOUT_DURATION_FOR_DEBUG = 200; // millisecond 39e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka 40e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public final int mTrailColor; 41e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public final float mTrailStartWidth; 42e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public final float mTrailEndWidth; 43e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public final float mTrailBodyRatio; 44e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public boolean mTrailShadowEnabled; 45e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public final float mTrailShadowRatio; 46e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public final int mFadeoutStartDelay; 47e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public final int mFadeoutDuration; 48e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public final int mUpdateInterval; 49e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka 50e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public final int mTrailLingerDuration; 51e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka 52e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka public GestureTrailDrawingParams(final TypedArray mainKeyboardViewAttr) { 53e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mTrailColor = mainKeyboardViewAttr.getColor( 54e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka R.styleable.MainKeyboardView_gestureTrailColor, 0); 55e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mTrailStartWidth = mainKeyboardViewAttr.getDimension( 56e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka R.styleable.MainKeyboardView_gestureTrailStartWidth, 0.0f); 57e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mTrailEndWidth = mainKeyboardViewAttr.getDimension( 58e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka R.styleable.MainKeyboardView_gestureTrailEndWidth, 0.0f); 59e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka final int PERCENTAGE_INT = 100; 60e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mTrailBodyRatio = (float)mainKeyboardViewAttr.getInt( 61e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka R.styleable.MainKeyboardView_gestureTrailBodyRatio, PERCENTAGE_INT) 62e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka / (float)PERCENTAGE_INT; 63e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka final int trailShadowRatioInt = mainKeyboardViewAttr.getInt( 64e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka R.styleable.MainKeyboardView_gestureTrailShadowRatio, 0); 65e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mTrailShadowEnabled = (trailShadowRatioInt > 0); 66e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mTrailShadowRatio = (float)trailShadowRatioInt / (float)PERCENTAGE_INT; 67e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mFadeoutStartDelay = GestureTrailDrawingPoints.DEBUG_SHOW_POINTS 68e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka ? FADEOUT_START_DELAY_FOR_DEBUG 69e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka : mainKeyboardViewAttr.getInt( 70e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka R.styleable.MainKeyboardView_gestureTrailFadeoutStartDelay, 0); 71e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mFadeoutDuration = GestureTrailDrawingPoints.DEBUG_SHOW_POINTS 72e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka ? FADEOUT_DURATION_FOR_DEBUG 73e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka : mainKeyboardViewAttr.getInt( 74e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka R.styleable.MainKeyboardView_gestureTrailFadeoutDuration, 0); 75e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mTrailLingerDuration = mFadeoutStartDelay + mFadeoutDuration; 76e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka mUpdateInterval = mainKeyboardViewAttr.getInt( 77e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka R.styleable.MainKeyboardView_gestureTrailUpdateInterval, 0); 78e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka } 79e2a6253cb581f9ab70cfb723d32b14f9ac7d2ab7Tadashi G. Takaoka} 80