1 /*
2  * Copyright (C) 2021 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 androidx.constraintlayout.core.motion.utils;
17 
18 /**
19  * Provides an interface to values used in KeyFrames and in
20  * Starting and Ending Widgets
21  */
22 public interface TypedValues {
23     String S_CUSTOM = "CUSTOM";
24     int BOOLEAN_MASK = 1;
25     int INT_MASK = 2;
26     int FLOAT_MASK = 4;
27     int STRING_MASK = 8;
28 
29     /**
30      * Used to set integer values
31      *
32      * @return true if it accepted the value
33      */
setValue(int id, int value)34     boolean setValue(int id, int value);
35 
36     /**
37      * Used to set float values
38      *
39      * @return true if it accepted the value
40      */
setValue(int id, float value)41     boolean setValue(int id, float value);
42 
43     /**
44      * Used to set String values
45      *
46      * @return true if it accepted the value
47      */
setValue(int id, String value)48     boolean setValue(int id, String value);
49 
50     /**
51      * Used to set boolean values
52      *
53      * @return true if it accepted the value
54      */
setValue(int id, boolean value)55     boolean setValue(int id, boolean value);
56 
57     // @TODO: add description
getId(String name)58     int getId(String name);
59 
60     int TYPE_FRAME_POSITION = 100;
61     int TYPE_TARGET = 101;
62 
63     interface AttributesType {
64         String NAME = "KeyAttributes";
65 
66         int TYPE_CURVE_FIT = 301;
67         int TYPE_VISIBILITY = 302;
68         int TYPE_ALPHA = 303;
69         int TYPE_TRANSLATION_X = 304;
70         int TYPE_TRANSLATION_Y = 305;
71         int TYPE_TRANSLATION_Z = 306;
72         int TYPE_ELEVATION = 307;
73         int TYPE_ROTATION_X = 308;
74         int TYPE_ROTATION_Y = 309;
75         int TYPE_ROTATION_Z = 310;
76         int TYPE_SCALE_X = 311;
77         int TYPE_SCALE_Y = 312;
78         int TYPE_PIVOT_X = 313;
79         int TYPE_PIVOT_Y = 314;
80         int TYPE_PROGRESS = 315;
81         int TYPE_PATH_ROTATE = 316;
82         int TYPE_EASING = 317;
83         int TYPE_PIVOT_TARGET = 318;
84 
85         String S_CURVE_FIT = "curveFit";
86         String S_VISIBILITY = "visibility";
87         String S_ALPHA = "alpha";
88 
89         String S_TRANSLATION_X = "translationX";
90         String S_TRANSLATION_Y = "translationY";
91         String S_TRANSLATION_Z = "translationZ";
92         String S_ELEVATION = "elevation";
93         String S_ROTATION_X = "rotationX";
94         String S_ROTATION_Y = "rotationY";
95         String S_ROTATION_Z = "rotationZ";
96         String S_SCALE_X = "scaleX";
97         String S_SCALE_Y = "scaleY";
98         String S_PIVOT_X = "pivotX";
99         String S_PIVOT_Y = "pivotY";
100         String S_PROGRESS = "progress";
101         String S_PATH_ROTATE = "pathRotate";
102         String S_EASING = "easing";
103         String S_CUSTOM = "CUSTOM";
104         String S_FRAME = "frame";
105         String S_TARGET = "target";
106         String S_PIVOT_TARGET = "pivotTarget";
107 
108         String[] KEY_WORDS = {
109                 S_CURVE_FIT,
110                 S_VISIBILITY,
111                 S_ALPHA,
112                 S_TRANSLATION_X,
113                 S_TRANSLATION_Y,
114                 S_TRANSLATION_Z,
115                 S_ELEVATION,
116                 S_ROTATION_X,
117                 S_ROTATION_Y,
118                 S_ROTATION_Z,
119                 S_SCALE_X,
120                 S_SCALE_Y,
121                 S_PIVOT_X,
122                 S_PIVOT_Y,
123                 S_PROGRESS,
124                 S_PATH_ROTATE,
125                 S_EASING,
126                 S_CUSTOM,
127                 S_FRAME,
128                 S_TARGET,
129                 S_PIVOT_TARGET,
130         };
131 
132         /**
133          * Method to go from String names of values to id of the values
134          * IDs are use for efficiency
135          *
136          * @param name the name of the value
137          * @return the id of the vlalue or -1 if no value exist
138          */
getId(String name)139         static int getId(String name) {
140             switch (name) {
141                 case S_CURVE_FIT:
142                     return TYPE_CURVE_FIT;
143                 case S_VISIBILITY:
144                     return TYPE_VISIBILITY;
145                 case S_ALPHA:
146                     return TYPE_ALPHA;
147                 case S_TRANSLATION_X:
148                     return TYPE_TRANSLATION_X;
149                 case S_TRANSLATION_Y:
150                     return TYPE_TRANSLATION_Y;
151                 case S_TRANSLATION_Z:
152                     return TYPE_TRANSLATION_Z;
153                 case S_ELEVATION:
154                     return TYPE_ELEVATION;
155                 case S_ROTATION_X:
156                     return TYPE_ROTATION_X;
157                 case S_ROTATION_Y:
158                     return TYPE_ROTATION_Y;
159                 case S_ROTATION_Z:
160                     return TYPE_ROTATION_Z;
161                 case S_SCALE_X:
162                     return TYPE_SCALE_X;
163                 case S_SCALE_Y:
164                     return TYPE_SCALE_Y;
165                 case S_PIVOT_X:
166                     return TYPE_PIVOT_X;
167                 case S_PIVOT_Y:
168                     return TYPE_PIVOT_Y;
169                 case S_PROGRESS:
170                     return TYPE_PROGRESS;
171                 case S_PATH_ROTATE:
172                     return TYPE_PATH_ROTATE;
173                 case S_EASING:
174                     return TYPE_EASING;
175                 case S_FRAME:
176                     return TYPE_FRAME_POSITION;
177                 case S_TARGET:
178                     return TYPE_TARGET;
179                 case S_PIVOT_TARGET:
180                     return TYPE_PIVOT_TARGET;
181             }
182             return -1;
183         }
184 
getType(int name)185         static int getType(int name) {
186             switch (name) {
187                 case TYPE_CURVE_FIT:
188                 case TYPE_VISIBILITY:
189                 case TYPE_FRAME_POSITION:
190                     return INT_MASK;
191                 case TYPE_ALPHA:
192                 case TYPE_TRANSLATION_X:
193                 case TYPE_TRANSLATION_Y:
194                 case TYPE_TRANSLATION_Z:
195                 case TYPE_ELEVATION:
196                 case TYPE_ROTATION_X:
197                 case TYPE_ROTATION_Y:
198                 case TYPE_ROTATION_Z:
199                 case TYPE_SCALE_X:
200                 case TYPE_SCALE_Y:
201                 case TYPE_PIVOT_X:
202                 case TYPE_PIVOT_Y:
203                 case TYPE_PROGRESS:
204                 case TYPE_PATH_ROTATE:
205                     return FLOAT_MASK;
206                 case TYPE_EASING:
207                 case TYPE_TARGET:
208                 case TYPE_PIVOT_TARGET:
209                     return STRING_MASK;
210             }
211             return -1;
212         }
213     }
214 
215     interface CycleType {
216         String NAME = "KeyCycle";
217         int TYPE_CURVE_FIT = 401;
218         int TYPE_VISIBILITY = 402;
219         int TYPE_ALPHA = 403;
220         int TYPE_TRANSLATION_X = AttributesType.TYPE_TRANSLATION_X;
221         int TYPE_TRANSLATION_Y = AttributesType.TYPE_TRANSLATION_Y;
222         int TYPE_TRANSLATION_Z = AttributesType.TYPE_TRANSLATION_Z;
223         int TYPE_ELEVATION = AttributesType.TYPE_ELEVATION;
224 
225         int TYPE_ROTATION_X = AttributesType.TYPE_ROTATION_X;
226         int TYPE_ROTATION_Y = AttributesType.TYPE_ROTATION_Y;
227         int TYPE_ROTATION_Z = AttributesType.TYPE_ROTATION_Z;
228         int TYPE_SCALE_X = AttributesType.TYPE_SCALE_X;
229         int TYPE_SCALE_Y = AttributesType.TYPE_SCALE_Y;
230         int TYPE_PIVOT_X = AttributesType.TYPE_PIVOT_X;
231         int TYPE_PIVOT_Y = AttributesType.TYPE_PIVOT_Y;
232         int TYPE_PROGRESS = AttributesType.TYPE_PROGRESS;
233         int TYPE_PATH_ROTATE = 416;
234         int TYPE_EASING = 420;
235         int TYPE_WAVE_SHAPE = 421;
236         int TYPE_CUSTOM_WAVE_SHAPE = 422;
237         int TYPE_WAVE_PERIOD = 423;
238         int TYPE_WAVE_OFFSET = 424;
239         int TYPE_WAVE_PHASE = 425;
240 
241         String S_CURVE_FIT = "curveFit";
242         String S_VISIBILITY = "visibility";
243         String S_ALPHA = AttributesType.S_ALPHA;
244         String S_TRANSLATION_X = AttributesType.S_TRANSLATION_X;
245         String S_TRANSLATION_Y = AttributesType.S_TRANSLATION_Y;
246         String S_TRANSLATION_Z = AttributesType.S_TRANSLATION_Z;
247         String S_ELEVATION = AttributesType.S_ELEVATION;
248         String S_ROTATION_X = AttributesType.S_ROTATION_X;
249         String S_ROTATION_Y = AttributesType.S_ROTATION_Y;
250         String S_ROTATION_Z = AttributesType.S_ROTATION_Z;
251         String S_SCALE_X = AttributesType.S_SCALE_X;
252         String S_SCALE_Y = AttributesType.S_SCALE_Y;
253         String S_PIVOT_X = AttributesType.S_PIVOT_X;
254         String S_PIVOT_Y = AttributesType.S_PIVOT_Y;
255         String S_PROGRESS = AttributesType.S_PROGRESS;
256 
257         String S_PATH_ROTATE = "pathRotate";
258         String S_EASING = "easing";
259         String S_WAVE_SHAPE = "waveShape";
260         String S_CUSTOM_WAVE_SHAPE = "customWave";
261         String S_WAVE_PERIOD = "period";
262         String S_WAVE_OFFSET = "offset";
263         String S_WAVE_PHASE = "phase";
264         String[] KEY_WORDS = {
265                 S_CURVE_FIT,
266                 S_VISIBILITY,
267                 S_ALPHA,
268                 S_TRANSLATION_X,
269                 S_TRANSLATION_Y,
270                 S_TRANSLATION_Z,
271                 S_ELEVATION,
272                 S_ROTATION_X,
273                 S_ROTATION_Y,
274                 S_ROTATION_Z,
275                 S_SCALE_X,
276                 S_SCALE_Y,
277                 S_PIVOT_X,
278                 S_PIVOT_Y,
279                 S_PROGRESS,
280 
281                 S_PATH_ROTATE,
282                 S_EASING,
283                 S_WAVE_SHAPE,
284                 S_CUSTOM_WAVE_SHAPE,
285                 S_WAVE_PERIOD,
286                 S_WAVE_OFFSET,
287                 S_WAVE_PHASE,
288         };
289 
290         /**
291          * Method to go from String names of values to id of the values
292          * IDs are use for efficiency
293          *
294          * @param name the name of the value
295          * @return the id of the vlalue or -1 if no value exist
296          */
getId(String name)297         static int getId(String name) {
298             switch (name) {
299                 case S_CURVE_FIT:
300                     return TYPE_CURVE_FIT;
301                 case S_VISIBILITY:
302                     return TYPE_VISIBILITY;
303                 case S_ALPHA:
304                     return TYPE_ALPHA;
305                 case S_TRANSLATION_X:
306                     return TYPE_TRANSLATION_X;
307                 case S_TRANSLATION_Y:
308                     return TYPE_TRANSLATION_Y;
309                 case S_TRANSLATION_Z:
310                     return TYPE_TRANSLATION_Z;
311                 case S_ROTATION_X:
312                     return TYPE_ROTATION_X;
313                 case S_ROTATION_Y:
314                     return TYPE_ROTATION_Y;
315                 case S_ROTATION_Z:
316                     return TYPE_ROTATION_Z;
317                 case S_SCALE_X:
318                     return TYPE_SCALE_X;
319                 case S_SCALE_Y:
320                     return TYPE_SCALE_Y;
321                 case S_PIVOT_X:
322                     return TYPE_PIVOT_X;
323                 case S_PIVOT_Y:
324                     return TYPE_PIVOT_Y;
325                 case S_PROGRESS:
326                     return TYPE_PROGRESS;
327                 case S_PATH_ROTATE:
328                     return TYPE_PATH_ROTATE;
329                 case S_EASING:
330                     return TYPE_EASING;
331             }
332             return -1;
333         }
334 
getType(int name)335         static int getType(int name) {
336             switch (name) {
337                 case TYPE_CURVE_FIT:
338                 case TYPE_VISIBILITY:
339                 case TYPE_FRAME_POSITION:
340                     return INT_MASK;
341                 case TYPE_ALPHA:
342                 case TYPE_TRANSLATION_X:
343                 case TYPE_TRANSLATION_Y:
344                 case TYPE_TRANSLATION_Z:
345                 case TYPE_ELEVATION:
346                 case TYPE_ROTATION_X:
347                 case TYPE_ROTATION_Y:
348                 case TYPE_ROTATION_Z:
349                 case TYPE_SCALE_X:
350                 case TYPE_SCALE_Y:
351                 case TYPE_PIVOT_X:
352                 case TYPE_PIVOT_Y:
353                 case TYPE_PROGRESS:
354                 case TYPE_PATH_ROTATE:
355                 case TYPE_WAVE_PERIOD:
356                 case TYPE_WAVE_OFFSET:
357                 case TYPE_WAVE_PHASE:
358                     return FLOAT_MASK;
359                 case TYPE_EASING:
360                 case TYPE_TARGET:
361                 case TYPE_WAVE_SHAPE:
362                     return STRING_MASK;
363             }
364             return -1;
365         }
366     }
367 
368     interface TriggerType {
369         String NAME = "KeyTrigger";
370         String VIEW_TRANSITION_ON_CROSS = "viewTransitionOnCross";
371         String VIEW_TRANSITION_ON_POSITIVE_CROSS = "viewTransitionOnPositiveCross";
372         String VIEW_TRANSITION_ON_NEGATIVE_CROSS = "viewTransitionOnNegativeCross";
373         String POST_LAYOUT = "postLayout";
374         String TRIGGER_SLACK = "triggerSlack";
375         String TRIGGER_COLLISION_VIEW = "triggerCollisionView";
376         String TRIGGER_COLLISION_ID = "triggerCollisionId";
377         String TRIGGER_ID = "triggerID";
378         String POSITIVE_CROSS = "positiveCross";
379         String NEGATIVE_CROSS = "negativeCross";
380         String TRIGGER_RECEIVER = "triggerReceiver";
381         String CROSS = "CROSS";
382         String[] KEY_WORDS = {
383                 VIEW_TRANSITION_ON_CROSS,
384                 VIEW_TRANSITION_ON_POSITIVE_CROSS,
385                 VIEW_TRANSITION_ON_NEGATIVE_CROSS,
386                 POST_LAYOUT,
387                 TRIGGER_SLACK,
388                 TRIGGER_COLLISION_VIEW,
389                 TRIGGER_COLLISION_ID,
390                 TRIGGER_ID,
391                 POSITIVE_CROSS,
392                 NEGATIVE_CROSS,
393                 TRIGGER_RECEIVER,
394                 CROSS,
395         };
396         int TYPE_VIEW_TRANSITION_ON_CROSS = 301;
397         int TYPE_VIEW_TRANSITION_ON_POSITIVE_CROSS = 302;
398         int TYPE_VIEW_TRANSITION_ON_NEGATIVE_CROSS = 303;
399         int TYPE_POST_LAYOUT = 304;
400         int TYPE_TRIGGER_SLACK = 305;
401         int TYPE_TRIGGER_COLLISION_VIEW = 306;
402         int TYPE_TRIGGER_COLLISION_ID = 307;
403         int TYPE_TRIGGER_ID = 308;
404         int TYPE_POSITIVE_CROSS = 309;
405         int TYPE_NEGATIVE_CROSS = 310;
406         int TYPE_TRIGGER_RECEIVER = 311;
407         int TYPE_CROSS = 312;
408 
409         /**
410          * Method to go from String names of values to id of the values
411          * IDs are use for efficiency
412          *
413          * @param name the name of the value
414          * @return the id of the vlalue or -1 if no value exist
415          */
getId(String name)416         static int getId(String name) {
417             switch (name) {
418                 case VIEW_TRANSITION_ON_CROSS:
419                     return TYPE_VIEW_TRANSITION_ON_CROSS;
420                 case VIEW_TRANSITION_ON_POSITIVE_CROSS:
421                     return TYPE_VIEW_TRANSITION_ON_POSITIVE_CROSS;
422                 case VIEW_TRANSITION_ON_NEGATIVE_CROSS:
423                     return TYPE_VIEW_TRANSITION_ON_NEGATIVE_CROSS;
424                 case POST_LAYOUT:
425                     return TYPE_POST_LAYOUT;
426                 case TRIGGER_SLACK:
427                     return TYPE_TRIGGER_SLACK;
428                 case TRIGGER_COLLISION_VIEW:
429                     return TYPE_TRIGGER_COLLISION_VIEW;
430                 case TRIGGER_COLLISION_ID:
431                     return TYPE_TRIGGER_COLLISION_ID;
432                 case TRIGGER_ID:
433                     return TYPE_TRIGGER_ID;
434                 case POSITIVE_CROSS:
435                     return TYPE_POSITIVE_CROSS;
436                 case NEGATIVE_CROSS:
437                     return TYPE_NEGATIVE_CROSS;
438                 case TRIGGER_RECEIVER:
439                     return TYPE_TRIGGER_RECEIVER;
440                 case CROSS:
441                     return TYPE_CROSS;
442             }
443             return -1;
444         }
445     }
446 
447     interface PositionType {
448         String NAME = "KeyPosition";
449         String S_TRANSITION_EASING = "transitionEasing";
450         String S_DRAWPATH = "drawPath";
451         String S_PERCENT_WIDTH = "percentWidth";
452         String S_PERCENT_HEIGHT = "percentHeight";
453         String S_SIZE_PERCENT = "sizePercent";
454         String S_PERCENT_X = "percentX";
455         String S_PERCENT_Y = "percentY";
456 
457         int TYPE_TRANSITION_EASING = 501;
458         int TYPE_DRAWPATH = 502;
459         int TYPE_PERCENT_WIDTH = 503;
460         int TYPE_PERCENT_HEIGHT = 504;
461         int TYPE_SIZE_PERCENT = 505;
462         int TYPE_PERCENT_X = 506;
463         int TYPE_PERCENT_Y = 507;
464         int TYPE_CURVE_FIT = 508;
465         int TYPE_PATH_MOTION_ARC = 509;
466         int TYPE_POSITION_TYPE = 510;
467         String[] KEY_WORDS = {
468                 S_TRANSITION_EASING,
469                 S_DRAWPATH,
470                 S_PERCENT_WIDTH,
471                 S_PERCENT_HEIGHT,
472                 S_SIZE_PERCENT,
473                 S_PERCENT_X,
474                 S_PERCENT_Y,
475         };
476 
477         /**
478          * Method to go from String names of values to id of the values
479          * IDs are use for efficiency
480          *
481          * @param name the name of the value
482          * @return the id of the vlalue or -1 if no value exist
483          */
getId(String name)484         static int getId(String name) {
485             switch (name) {
486                 case S_TRANSITION_EASING:
487                     return PositionType.TYPE_TRANSITION_EASING;
488                 case S_DRAWPATH:
489                     return PositionType.TYPE_DRAWPATH;
490                 case S_PERCENT_WIDTH:
491                     return PositionType.TYPE_PERCENT_WIDTH;
492                 case S_PERCENT_HEIGHT:
493                     return PositionType.TYPE_PERCENT_HEIGHT;
494                 case S_SIZE_PERCENT:
495                     return PositionType.TYPE_SIZE_PERCENT;
496                 case S_PERCENT_X:
497                     return PositionType.TYPE_PERCENT_X;
498                 case S_PERCENT_Y:
499                     return PositionType.TYPE_PERCENT_Y;
500             }
501             return -1;
502         }
503 
getType(int name)504         static int getType(int name) {
505             switch (name) {
506                 case TYPE_CURVE_FIT:
507                 case TYPE_FRAME_POSITION:
508                     return INT_MASK;
509                 case TYPE_PERCENT_WIDTH:
510                 case TYPE_PERCENT_HEIGHT:
511                 case TYPE_SIZE_PERCENT:
512                 case TYPE_PERCENT_X:
513                 case TYPE_PERCENT_Y:
514                     return FLOAT_MASK;
515                 case TYPE_TRANSITION_EASING:
516                 case TYPE_TARGET:
517                 case TYPE_DRAWPATH:
518                     return STRING_MASK;
519             }
520             return -1;
521         }
522 
523 
524     }
525 
526     interface MotionType {
527         String NAME = "Motion";
528 
529         String S_STAGGER = "Stagger";
530         String S_PATH_ROTATE = "PathRotate";
531         String S_QUANTIZE_MOTION_PHASE = "QuantizeMotionPhase";
532         String S_EASING = "TransitionEasing";
533         String S_QUANTIZE_INTERPOLATOR = "QuantizeInterpolator";
534         String S_ANIMATE_RELATIVE_TO = "AnimateRelativeTo";
535         String S_ANIMATE_CIRCLEANGLE_TO = "AnimateCircleAngleTo";
536         String S_PATHMOTION_ARC = "PathMotionArc";
537         String S_DRAW_PATH = "DrawPath";
538         String S_POLAR_RELATIVETO = "PolarRelativeTo";
539         String S_QUANTIZE_MOTIONSTEPS = "QuantizeMotionSteps";
540         String S_QUANTIZE_INTERPOLATOR_TYPE = "QuantizeInterpolatorType";
541         String S_QUANTIZE_INTERPOLATOR_ID = "QuantizeInterpolatorID";
542         String[] KEY_WORDS = {
543                 S_STAGGER,
544                 S_PATH_ROTATE,
545                 S_QUANTIZE_MOTION_PHASE,
546                 S_EASING,
547                 S_QUANTIZE_INTERPOLATOR,
548                 S_ANIMATE_RELATIVE_TO,
549                 S_ANIMATE_CIRCLEANGLE_TO,
550                 S_PATHMOTION_ARC,
551                 S_DRAW_PATH,
552                 S_POLAR_RELATIVETO,
553                 S_QUANTIZE_MOTIONSTEPS,
554                 S_QUANTIZE_INTERPOLATOR_TYPE,
555                 S_QUANTIZE_INTERPOLATOR_ID,
556         };
557         int TYPE_STAGGER = 600;
558         int TYPE_PATH_ROTATE = 601;
559         int TYPE_QUANTIZE_MOTION_PHASE = 602;
560         int TYPE_EASING = 603;
561         int TYPE_QUANTIZE_INTERPOLATOR = 604;
562         int TYPE_ANIMATE_RELATIVE_TO = 605;
563         int TYPE_ANIMATE_CIRCLEANGLE_TO = 606;
564         int TYPE_PATHMOTION_ARC = 607;
565         int TYPE_DRAW_PATH = 608;
566         int TYPE_POLAR_RELATIVETO = 609;
567         int TYPE_QUANTIZE_MOTIONSTEPS = 610;
568         int TYPE_QUANTIZE_INTERPOLATOR_TYPE = 611;
569         int TYPE_QUANTIZE_INTERPOLATOR_ID = 612;
570 
571         /**
572          * Method to go from String names of values to id of the values
573          * IDs are use for efficiency
574          *
575          * @param name the name of the value
576          * @return the id of the vlalue or -1 if no value exist
577          */
getId(String name)578         static int getId(String name) {
579             switch (name) {
580                 case S_STAGGER:
581                     return TYPE_STAGGER;
582                 case S_PATH_ROTATE:
583                     return TYPE_PATH_ROTATE;
584                 case S_QUANTIZE_MOTION_PHASE:
585                     return TYPE_QUANTIZE_MOTION_PHASE;
586                 case S_EASING:
587                     return TYPE_EASING;
588                 case S_QUANTIZE_INTERPOLATOR:
589                     return TYPE_QUANTIZE_INTERPOLATOR;
590                 case S_ANIMATE_RELATIVE_TO:
591                     return TYPE_ANIMATE_RELATIVE_TO;
592                 case S_ANIMATE_CIRCLEANGLE_TO:
593                     return TYPE_ANIMATE_CIRCLEANGLE_TO;
594                 case S_PATHMOTION_ARC:
595                     return TYPE_PATHMOTION_ARC;
596                 case S_DRAW_PATH:
597                     return TYPE_DRAW_PATH;
598                 case S_POLAR_RELATIVETO:
599                     return TYPE_POLAR_RELATIVETO;
600                 case S_QUANTIZE_MOTIONSTEPS:
601                     return TYPE_QUANTIZE_MOTIONSTEPS;
602                 case S_QUANTIZE_INTERPOLATOR_TYPE:
603                     return TYPE_QUANTIZE_INTERPOLATOR_TYPE;
604                 case S_QUANTIZE_INTERPOLATOR_ID:
605                     return TYPE_QUANTIZE_INTERPOLATOR_ID;
606             }
607             return -1;
608         }
609 
610     }
611 
612     interface Custom {
613         String NAME = "Custom";
614         String S_INT = "integer";
615         String S_FLOAT = "float";
616         String S_COLOR = "color";
617         String S_STRING = "string";
618         String S_BOOLEAN = "boolean";
619         String S_DIMENSION = "dimension";
620         String S_REFERENCE = "reference";
621         String[] KEY_WORDS = {
622                 S_FLOAT,
623                 S_COLOR,
624                 S_STRING,
625                 S_BOOLEAN,
626                 S_DIMENSION,
627                 S_REFERENCE,
628         };
629         int TYPE_INT = 900;
630         int TYPE_FLOAT = 901;
631         int TYPE_COLOR = 902;
632         int TYPE_STRING = 903;
633         int TYPE_BOOLEAN = 904;
634         int TYPE_DIMENSION = 905;
635         int TYPE_REFERENCE = 906;
636 
637         /**
638          * Method to go from String names of values to id of the values
639          * IDs are use for efficiency
640          *
641          * @param name the name of the value
642          * @return the id of the vlalue or -1 if no value exist
643          */
getId(String name)644         static int getId(String name) {
645             switch (name) {
646                 case S_INT:
647                     return TYPE_INT;
648                 case S_FLOAT:
649                     return TYPE_FLOAT;
650                 case S_COLOR:
651                     return TYPE_COLOR;
652                 case S_STRING:
653                     return TYPE_STRING;
654                 case S_BOOLEAN:
655                     return TYPE_BOOLEAN;
656                 case S_DIMENSION:
657                     return TYPE_DIMENSION;
658                 case S_REFERENCE:
659                     return TYPE_REFERENCE;
660             }
661             return -1;
662         }
663     }
664 
665     interface MotionScene {
666         String NAME = "MotionScene";
667         String S_DEFAULT_DURATION = "defaultDuration";
668         String S_LAYOUT_DURING_TRANSITION = "layoutDuringTransition";
669         int TYPE_DEFAULT_DURATION = 600;
670         int TYPE_LAYOUT_DURING_TRANSITION = 601;
671 
672         String[] KEY_WORDS = {
673                 S_DEFAULT_DURATION,
674                 S_LAYOUT_DURING_TRANSITION,
675         };
676 
getType(int name)677         static int getType(int name) {
678             switch (name) {
679                 case TYPE_DEFAULT_DURATION:
680                     return INT_MASK;
681                 case TYPE_LAYOUT_DURING_TRANSITION:
682                     return BOOLEAN_MASK;
683             }
684             return -1;
685         }
686 
687         /**
688          * Method to go from String names of values to id of the values
689          * IDs are use for efficiency
690          *
691          * @param name the name of the value
692          * @return the id of the vlalue or -1 if no value exist
693          */
getId(String name)694         static int getId(String name) {
695             switch (name) {
696                 case S_DEFAULT_DURATION:
697                     return TYPE_DEFAULT_DURATION;
698                 case S_LAYOUT_DURING_TRANSITION:
699                     return TYPE_LAYOUT_DURING_TRANSITION;
700             }
701             return -1;
702         }
703     }
704 
705     interface TransitionType {
706         String NAME = "Transitions";
707         String S_DURATION = "duration";
708         String S_FROM = "from";
709         String S_TO = "to";
710         String S_PATH_MOTION_ARC = "pathMotionArc";
711         String S_AUTO_TRANSITION = "autoTransition";
712         String S_INTERPOLATOR = "motionInterpolator";
713         String S_STAGGERED = "staggered";
714         String S_TRANSITION_FLAGS = "transitionFlags";
715 
716         int TYPE_DURATION = 700;
717         int TYPE_FROM = 701;
718         int TYPE_TO = 702;
719         int TYPE_PATH_MOTION_ARC = PositionType.TYPE_PATH_MOTION_ARC;
720         int TYPE_AUTO_TRANSITION = 704;
721         int TYPE_INTERPOLATOR = 705;
722         int TYPE_STAGGERED = 706;
723         int TYPE_TRANSITION_FLAGS = 707;
724 
725 
726         String[] KEY_WORDS = {
727                 S_DURATION,
728                 S_FROM,
729                 S_TO,
730                 S_PATH_MOTION_ARC,
731                 S_AUTO_TRANSITION,
732                 S_INTERPOLATOR,
733                 S_STAGGERED,
734                 S_FROM,
735                 S_TRANSITION_FLAGS,
736         };
737 
getType(int name)738         static int getType(int name) {
739             switch (name) {
740                 case TYPE_DURATION:
741                 case TYPE_PATH_MOTION_ARC:
742                     return INT_MASK;
743                 case TYPE_FROM:
744                 case TYPE_TO:
745                 case TYPE_INTERPOLATOR:
746                 case TYPE_TRANSITION_FLAGS:
747                     return STRING_MASK;
748 
749                 case TYPE_STAGGERED:
750                     return FLOAT_MASK;
751             }
752             return -1;
753         }
754 
755         /**
756          * Method to go from String names of values to id of the values
757          * IDs are use for efficiency
758          *
759          * @param name the name of the value
760          * @return the id of the vlalue or -1 if no value exist
761          */
getId(String name)762         static int getId(String name) {
763             switch (name) {
764                 case S_DURATION:
765                     return TYPE_DURATION;
766                 case S_FROM:
767                     return TYPE_FROM;
768                 case S_TO:
769                     return TYPE_TO;
770                 case S_PATH_MOTION_ARC:
771                     return TYPE_PATH_MOTION_ARC;
772                 case S_AUTO_TRANSITION:
773                     return TYPE_AUTO_TRANSITION;
774                 case S_INTERPOLATOR:
775                     return TYPE_INTERPOLATOR;
776                 case S_STAGGERED:
777                     return TYPE_STAGGERED;
778                 case S_TRANSITION_FLAGS:
779                     return TYPE_TRANSITION_FLAGS;
780             }
781             return -1;
782         }
783     }
784 
785     interface OnSwipe {
786         String DRAG_SCALE = "dragscale";
787         String DRAG_THRESHOLD = "dragthreshold";
788 
789         String MAX_VELOCITY = "maxvelocity";
790         String MAX_ACCELERATION = "maxacceleration";
791         String SPRING_MASS = "springmass";
792         String SPRING_STIFFNESS = "springstiffness";
793         String SPRING_DAMPING = "springdamping";
794         String SPRINGS_TOP_THRESHOLD = "springstopthreshold";
795 
796         String DRAG_DIRECTION = "dragdirection";
797         String TOUCH_ANCHOR_ID = "touchanchorid";
798         String TOUCH_ANCHOR_SIDE = "touchanchorside";
799         String ROTATION_CENTER_ID = "rotationcenterid";
800         String TOUCH_REGION_ID = "touchregionid";
801         String LIMIT_BOUNDS_TO = "limitboundsto";
802 
803         String MOVE_WHEN_SCROLLAT_TOP = "movewhenscrollattop";
804         String ON_TOUCH_UP = "ontouchup";
805         String[] ON_TOUCH_UP_ENUM = {"autoComplete",
806                 "autoCompleteToStart",
807                 "autoCompleteToEnd",
808                 "stop",
809                 "decelerate",
810                 "decelerateAndComplete",
811                 "neverCompleteToStart",
812                 "neverCompleteToEnd"};
813 
814 
815         String SPRING_BOUNDARY = "springboundary";
816         String[] SPRING_BOUNDARY_ENUM = {"overshoot",
817                 "bounceStart",
818                 "bounceEnd",
819                 "bounceBoth"};
820 
821         String AUTOCOMPLETE_MODE = "autocompletemode";
822         String[] AUTOCOMPLETE_MODE_ENUM = {
823                 "continuousVelocity",
824                 "spring"};
825 
826         String NESTED_SCROLL_FLAGS = "nestedscrollflags";
827         String[] NESTED_SCROLL_FLAGS_ENUM = {"none",
828                 "disablePostScroll",
829                 "disableScroll",
830                 "supportScrollUp"};
831 
832     }
833 
834 }
835