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

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

Add shadow to gesture preview trail

Bug: 7167303
Change-Id: I8f76fe0aec6cb32388e7c85d04516d1dd7d28c29
parent 785c5068
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -85,6 +85,8 @@
        <attr name="slidingKeyInputEnable" format="boolean" />
        <attr name="slidingKeyInputPreviewColor" format="color" />
        <attr name="slidingKeyInputPreviewWidth" format="dimension" />
        <attr name="slidingKeyInputPreviewBodyRatio" format="integer" />
        <attr name="slidingKeyInputPreviewShadowRatio" format="integer" />
        <!-- Key repeat start timeout -->
        <attr name="keyRepeatStartTimeout" format="integer" />
        <!-- Key repeat interval in millisecond. -->
@@ -115,6 +117,8 @@
        <attr name="gesturePreviewTrailColor" format="color" />
        <attr name="gesturePreviewTrailStartWidth" format="dimension" />
        <attr name="gesturePreviewTrailEndWidth" format="dimension" />
        <attr name="gesturePreviewTrailBodyRatio" format="integer" />
        <attr name="gesturePreviewTrailShadowRatio" format="integer" />
        <!-- Delay after gesture input and gesture floating preview text dismissing in millisecond -->
        <attr name="gestureFloatingPreviewTextLingerTimeout" format="integer" />
        <!-- Attributes for GestureFloatingPreviewText -->
+3 −0
Original line number Diff line number Diff line
@@ -58,6 +58,9 @@
    <bool name="config_sliding_key_input_enabled">true</bool>
    <!-- Sliding key input preview parameters -->
    <dimen name="config_sliding_key_input_preview_width">8.0dp</dimen>
    <!-- Percentages of sliding key input preview body and shadow, in proportion to the width. -->
    <integer name="config_sliding_key_input_preview_body_ratio">80</integer>
    <integer name="config_sliding_key_input_preview_shadow_ratio">50</integer>
    <integer name="config_key_repeat_start_timeout">400</integer>
    <integer name="config_key_repeat_interval">50</integer>
    <integer name="config_default_longpress_key_timeout">300</integer>  <!-- milliseconds -->
+3 −0
Original line number Diff line number Diff line
@@ -103,6 +103,9 @@
    <!-- Gesture preview trail parameters -->
    <dimen name="gesture_preview_trail_start_width">10.0dp</dimen>
    <dimen name="gesture_preview_trail_end_width">2.5dp</dimen>
    <!-- Percentages of gesture preview taril body and shadow, in proportion to the trail width. -->
    <integer name="gesture_preview_trail_body_ratio">80</integer>
    <integer name="gesture_preview_trail_shadow_ratio">50</integer>
    <!-- Gesture floating preview text parameters -->
    <dimen name="gesture_floating_preview_text_size">24dp</dimen>
    <dimen name="gesture_floating_preview_text_offset">73dp</dimen>
+4 −0
Original line number Diff line number Diff line
@@ -70,6 +70,8 @@
        <item name="gesturePreviewTrailColor">@color/highlight_color_default</item>
        <item name="gesturePreviewTrailStartWidth">@dimen/gesture_preview_trail_start_width</item>
        <item name="gesturePreviewTrailEndWidth">@dimen/gesture_preview_trail_end_width</item>
        <item name="gesturePreviewTrailBodyRatio">@integer/gesture_preview_trail_body_ratio</item>
        <item name="gesturePreviewTrailShadowRatio">@integer/gesture_preview_trail_shadow_ratio</item>
        <!-- Common attributes of MainKeyboardView -->
        <item name="keyHysteresisDistance">@dimen/config_key_hysteresis_distance</item>
        <item name="keyHysteresisDistanceForSlidingModifier">@dimen/config_key_hysteresis_distance_for_sliding_modifier</item>
@@ -78,6 +80,8 @@
        <item name="slidingKeyInputEnable">@bool/config_sliding_key_input_enabled</item>
        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_default</item>
        <item name="slidingKeyInputPreviewWidth">@dimen/config_sliding_key_input_preview_width</item>
        <item name="slidingKeyInputPreviewBodyRatio">@integer/config_sliding_key_input_preview_body_ratio</item>
        <item name="slidingKeyInputPreviewShadowRatio">@integer/config_sliding_key_input_preview_shadow_ratio</item>
        <item name="keyRepeatStartTimeout">@integer/config_key_repeat_start_timeout</item>
        <item name="keyRepeatInterval">@integer/config_key_repeat_interval</item>
        <item name="longPressShiftLockTimeout">@integer/config_longpress_shift_lock_timeout</item>
+23 −4
Original line number Diff line number Diff line
@@ -51,6 +51,9 @@ final class GesturePreviewTrail {
        public final int mTrailColor;
        public final float mTrailStartWidth;
        public final float mTrailEndWidth;
        public final float mTrailBodyRatio;
        public boolean mTrailShadowEnabled;
        public final float mTrailShadowRatio;
        public final int mFadeoutStartDelay;
        public final int mFadeoutDuration;
        public final int mUpdateInterval;
@@ -64,6 +67,14 @@ final class GesturePreviewTrail {
                    R.styleable.MainKeyboardView_gesturePreviewTrailStartWidth, 0.0f);
            mTrailEndWidth = mainKeyboardViewAttr.getDimension(
                    R.styleable.MainKeyboardView_gesturePreviewTrailEndWidth, 0.0f);
            final int PERCENTAGE_INT = 100;
            mTrailBodyRatio = (float)mainKeyboardViewAttr.getInt(
                    R.styleable.MainKeyboardView_gesturePreviewTrailBodyRatio, PERCENTAGE_INT)
                    / (float)PERCENTAGE_INT;
            final int trailShadowRatioInt = mainKeyboardViewAttr.getInt(
                    R.styleable.MainKeyboardView_gesturePreviewTrailShadowRatio, 0);
            mTrailShadowEnabled = (trailShadowRatioInt > 0);
            mTrailShadowRatio = (float)trailShadowRatioInt / (float)PERCENTAGE_INT;
            mFadeoutStartDelay = mainKeyboardViewAttr.getInt(
                    R.styleable.MainKeyboardView_gesturePreviewTrailFadeoutStartDelay, 0);
            mFadeoutDuration = mainKeyboardViewAttr.getInt(
@@ -219,14 +230,22 @@ final class GesturePreviewTrail {
                final float r2 = getWidth(elapsedTime, params) / 2.0f;
                // Draw trail line only when the current point isn't a down point.
                if (!isDownEventXCoord(xCoords[i])) {
                    final Path path = roundedLine.makePath(p1x, p1y, r1, p2x, p2y, r2);
                    final float body1 = r1 * params.mTrailBodyRatio;
                    final float body2 = r2 * params.mTrailBodyRatio;
                    final Path path = roundedLine.makePath(p1x, p1y, body1, p2x, p2y, body2);
                    if (path != null) {
                        roundedLine.getBounds(mRoundedLineBounds);
                        if (params.mTrailShadowEnabled) {
                            final float shadow2 = r2 * params.mTrailShadowRatio;
                            paint.setShadowLayer(shadow2, 0.0f, 0.0f, params.mTrailColor);
                            final int shadowInset = -(int)Math.ceil(shadow2);
                            mRoundedLineBounds.inset(shadowInset, shadowInset);
                        }
                        // Take union for the bounds.
                        outBoundsRect.union(mRoundedLineBounds);
                        final int alpha = getAlpha(elapsedTime, params);
                        paint.setAlpha(alpha);
                        canvas.drawPath(path, paint);
                        // Take union for the bounds.
                        roundedLine.getBounds(mRoundedLineBounds);
                        outBoundsRect.union(mRoundedLineBounds);
                    }
                }
                p1x = p2x;
Loading