blob: 7b7eda84df4c4b87430c873e2031c1b89aca934c [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.accessibility.floatingmenu;
import android.annotation.FloatRange;
import android.text.TextUtils;
/**
* Stores information about the position, which includes percentage of X-axis of the screen,
* percentage of Y-axis of the screen.
*/
public class Position {
private static final char STRING_SEPARATOR = ',';
private static final TextUtils.SimpleStringSplitter sStringCommaSplitter =
new TextUtils.SimpleStringSplitter(STRING_SEPARATOR);
private float mPercentageX;
private float mPercentageY;
/**
* Creates a {@link Position} from a encoded string described in {@link #toString()}.
*
* @param positionString A string conform to the format described in {@link #toString()}
* @return A {@link Position} with the given value retrieved from {@code absolutePositionString}
* @throws IllegalArgumentException If {@code positionString} does not conform to the format
* described in {@link #toString()}
*/
public static Position fromString(String positionString) {
sStringCommaSplitter.setString(positionString);
if (sStringCommaSplitter.hasNext()) {
final float percentageX = Float.parseFloat(sStringCommaSplitter.next());
final float percentageY = Float.parseFloat(sStringCommaSplitter.next());
return new Position(percentageX, percentageY);
}
throw new IllegalArgumentException(
"Invalid Position string: " + positionString);
}
Position(float percentageX, float percentageY) {
update(percentageX, percentageY);
}
@Override
public String toString() {
return mPercentageX + ", " + mPercentageY;
}
/**
* Updates the position with {@code percentageX} and {@code percentageY}.
*
* @param percentageX the new percentage of X-axis of the screen, from 0.0 to 1.0.
* @param percentageY the new percentage of Y-axis of the screen, from 0.0 to 1.0.
*/
public void update(@FloatRange(from = 0.0, to = 1.0) float percentageX,
@FloatRange(from = 0.0, to = 1.0) float percentageY) {
mPercentageX = percentageX;
mPercentageY = percentageY;
}
public float getPercentageX() {
return mPercentageX;
}
public float getPercentageY() {
return mPercentageY;
}
}