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

Commit 6a579b70 authored by Miranda Kephart's avatar Miranda Kephart
Browse files

Add setEndpoints method to EdgeLights

Also changes 'offset' to 'start' for clarity.

Bug: 141366370
Test: manual
Change-Id: I814c6d3ca25a0b9391bfb2424f822a83bb8ef12f
parent a198f02a
Loading
Loading
Loading
Loading
+33 −10
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.assist.ui;

import android.util.Log;

import androidx.annotation.ColorInt;

/**
@@ -29,9 +31,12 @@ import androidx.annotation.ColorInt;
 * counter-clockwise.
 */
public final class EdgeLight {

    private static final String TAG = "EdgeLight";

    @ColorInt
    private int mColor;
    private float mOffset;
    private float mStart;
    private float mLength;

    /** Copies a list of EdgeLights. */
@@ -45,13 +50,13 @@ public final class EdgeLight {

    public EdgeLight(@ColorInt int color, float offset, float length) {
        mColor = color;
        mOffset = offset;
        mStart = offset;
        mLength = length;
    }

    public EdgeLight(EdgeLight sourceLight) {
        mColor = sourceLight.getColor();
        mOffset = sourceLight.getOffset();
        mStart = sourceLight.getStart();
        mLength = sourceLight.getLength();
    }

@@ -77,23 +82,41 @@ public final class EdgeLight {
    }

    /**
     * Returns the current offset, in units of the total device perimeter and measured from the
     * bottom-left corner (see class description).
     * Sets the endpoints of the edge light, both measured from the bottom-left corner (see class
     * description). This is a convenience method to avoid separate setStart and setLength calls.
     */
    public float getOffset() {
        return mOffset;
    public void setEndpoints(float start, float end) {
        if (start > end) {
            Log.e(TAG, String.format("Endpoint must be >= start (add 1 if necessary). Got [%f, %f]",
                    start, end));
            return;
        }
        mStart = start;
        mLength = end - start;
    }

    /**
     * Returns the current starting position, in units of the total device perimeter and measured
     * from the bottom-left corner (see class description).
     */
    public float getStart() {
        return mStart;
    }

    /**
     * Sets the current offset, in units of the total device perimeter and measured from the
     * bottom-left corner (see class description).
     */
    public void setOffset(float offset) {
        mOffset = offset;
    public void setStart(float start) {
        mStart = start;
    }

    public float getEnd() {
        return mStart + mLength;
    }

    /** Returns the center, measured from the bottom-left corner (see class description). */
    public float getCenter() {
        return mOffset + (mLength / 2.f);
        return mStart + (mLength / 2.f);
    }
}
+12 −11
Original line number Diff line number Diff line
@@ -140,10 +140,10 @@ public class InvocationLightsView extends View
            float rightStart = mGuide.getRegionWidth(PerimeterPathGuide.Region.BOTTOM)
                    + (cornerLengthNormalized - arcOffsetNormalized) * (1 - progress);

            setLight(0, leftStart, lightLength);
            setLight(1, leftStart + lightLength, lightLength);
            setLight(2, rightStart - (lightLength * 2), lightLength);
            setLight(3, rightStart - lightLength, lightLength);
            setLight(0, leftStart, leftStart + lightLength);
            setLight(1, leftStart + lightLength, leftStart + lightLength * 2);
            setLight(2, rightStart - (lightLength * 2), rightStart - lightLength);
            setLight(3, rightStart - lightLength, rightStart);
            setVisibility(View.VISIBLE);
        }
        invalidate();
@@ -155,7 +155,7 @@ public class InvocationLightsView extends View
    public void hide() {
        setVisibility(GONE);
        for (EdgeLight light : mAssistInvocationLights) {
            light.setLength(0);
            light.setEndpoints(0, 0);
        }
        attemptUnregisterNavBarListener();
    }
@@ -235,12 +235,11 @@ public class InvocationLightsView extends View
        }
    }

    protected void setLight(int index, float offset, float length) {
    protected void setLight(int index, float start, float end) {
        if (index < 0 || index >= 4) {
            Log.w(TAG, "invalid invocation light index: " + index);
        }
        mAssistInvocationLights.get(index).setOffset(offset);
        mAssistInvocationLights.get(index).setLength(length);
        mAssistInvocationLights.get(index).setEndpoints(start, end);
    }

    /**
@@ -268,10 +267,12 @@ public class InvocationLightsView extends View
    }

    private void renderLight(EdgeLight light, Canvas canvas) {
        mGuide.strokeSegment(mPath, light.getOffset(), light.getOffset() + light.getLength());
        if (light.getLength() > 0) {
            mGuide.strokeSegment(mPath, light.getStart(), light.getStart() + light.getLength());
            mPaint.setColor(light.getColor());
            canvas.drawPath(mPath, mPaint);
        }
    }

    private void attemptRegisterNavBarListener() {
        if (!mRegistered) {