/* * Copyright (C) 2013 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.example.android.curvedmotion; /** * A class that holds information about a location and how the path should get to that * location from the previous path location (if any). Any PathPoint holds the information for * its location as well as the instructions on how to traverse the preceding interval from the * previous location. */ public class PathPoint { /** * The possible path operations that describe how to move from a preceding PathPoint to the * location described by this PathPoint. */ public static final int MOVE = 0; public static final int LINE = 1; public static final int CURVE = 2; /** * The location of this PathPoint */ float mX, mY; /** * The first control point, if any, for a PathPoint of type CURVE */ float mControl0X, mControl0Y; /** * The second control point, if any, for a PathPoint of type CURVE */ float mControl1X, mControl1Y; /** * The motion described by the path to get from the previous PathPoint in an AnimatorPath * to the location of this PathPoint. This can be one of MOVE, LINE, or CURVE. */ int mOperation; /** * Line/Move constructor */ private PathPoint(int operation, float x, float y) { mOperation = operation; mX = x; mY = y; } /** * Curve constructor */ private PathPoint(float c0X, float c0Y, float c1X, float c1Y, float x, float y) { mControl0X = c0X; mControl0Y = c0Y; mControl1X = c1X; mControl1Y = c1Y; mX = x; mY = y; mOperation = CURVE; } /** * Constructs and returns a PathPoint object that describes a line to the given xy location. */ public static PathPoint lineTo(float x, float y) { return new PathPoint(LINE, x, y); } /** * Constructs and returns a PathPoint object that describes a curve to the given xy location * with the control points at c0 and c1. */ public static PathPoint curveTo(float c0X, float c0Y, float c1X, float c1Y, float x, float y) { return new PathPoint(c0X, c0Y, c1X, c1Y, x, y); } /** * Constructs and returns a PathPoint object that describes a discontinuous move to the given * xy location. */ public static PathPoint moveTo(float x, float y) { return new PathPoint(MOVE, x, y); } }