• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2013 The Android Open Source Project
3   *
4   * Licensed under the Apache License, Version 2.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *      http://www.apache.org/licenses/LICENSE-2.0
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package com.example.android.curvedmotion;
17  
18  /**
19   * A class that holds information about a location and how the path should get to that
20   * location from the previous path location (if any). Any PathPoint holds the information for
21   * its location as well as the instructions on how to traverse the preceding interval from the
22   * previous location.
23   */
24  public class PathPoint {
25  
26      /**
27       * The possible path operations that describe how to move from a preceding PathPoint to the
28       * location described by this PathPoint.
29       */
30      public static final int MOVE = 0;
31      public static final int LINE = 1;
32      public static final int CURVE = 2;
33  
34      /**
35       * The location of this PathPoint
36       */
37      float mX, mY;
38  
39      /**
40       * The first control point, if any, for a PathPoint of type CURVE
41       */
42      float mControl0X, mControl0Y;
43  
44      /**
45       * The second control point, if any, for a PathPoint of type CURVE
46       */
47      float mControl1X, mControl1Y;
48  
49      /**
50       * The motion described by the path to get from the previous PathPoint in an AnimatorPath
51       * to the location of this PathPoint. This can be one of MOVE, LINE, or CURVE.
52       */
53      int mOperation;
54  
55  
56  
57      /**
58       * Line/Move constructor
59       */
PathPoint(int operation, float x, float y)60      private PathPoint(int operation, float x, float y) {
61          mOperation = operation;
62          mX = x;
63          mY = y;
64      }
65  
66      /**
67       * Curve constructor
68       */
PathPoint(float c0X, float c0Y, float c1X, float c1Y, float x, float y)69      private PathPoint(float c0X, float c0Y, float c1X, float c1Y, float x, float y) {
70          mControl0X = c0X;
71          mControl0Y = c0Y;
72          mControl1X = c1X;
73          mControl1Y = c1Y;
74          mX = x;
75          mY = y;
76          mOperation = CURVE;
77      }
78  
79      /**
80       * Constructs and returns a PathPoint object that describes a line to the given xy location.
81       */
lineTo(float x, float y)82      public static PathPoint lineTo(float x, float y) {
83          return new PathPoint(LINE, x, y);
84      }
85  
86      /**
87       * Constructs and returns a PathPoint object that describes a curve to the given xy location
88       * with the control points at c0 and c1.
89       */
curveTo(float c0X, float c0Y, float c1X, float c1Y, float x, float y)90      public static PathPoint curveTo(float c0X, float c0Y, float c1X, float c1Y, float x, float y) {
91          return new PathPoint(c0X,  c0Y, c1X, c1Y, x, y);
92      }
93  
94      /**
95       * Constructs and returns a PathPoint object that describes a discontinuous move to the given
96       * xy location.
97       */
moveTo(float x, float y)98      public static PathPoint moveTo(float x, float y) {
99          return new PathPoint(MOVE, x, y);
100      }
101  }
102