// Path: library(1.x)/src/main/java/com/transitionseverywhere/utils/IntProperty.java
// @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
// public abstract class IntProperty<T> extends Property<T, Integer> {
// 
//     public IntProperty() {
//         super(Integer.class, null);
//     }
// 
//     public abstract void setValue(@NonNull T object, int value);
// 
//     @Override
//     final public void set(@NonNull T object, @NonNull Integer value) {
//         setValue(object, value);
//     }
// 
//     /**
//      * Just default realisation. Some of properties can have no getter. Override for real getter
//      */
//     @Override
//     @NonNull
//     public Integer get(T object) {
//         return 0;
//     }
// 
//     @SuppressLint("NewApi")
//     @NonNull
//     public Property<T, Integer> optimize() {
//         if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {
//             return new android.util.IntProperty<T>(null) {
//                 @Override
//                 public void setValue(@NonNull T object, int value) {
//                     IntProperty.this.setValue(object, value);
//                 }
// 
//                 @Override
//                 @NonNull
//                 public Integer get(@NonNull T object) {
//                     return IntProperty.this.get(object);
//                 }
//             };
//         } else {
//             return this;
//         }
//     }
// 
// }
// 
// Path: library/src/main/java/com/transitionseverywhere/utils/TransitionUtils.java
// @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
// public class TransitionUtils {
// 
//     @Nullable
//     public static Animator mergeAnimators(@Nullable Animator animator1, @Nullable Animator animator2) {
//         if (animator1 == null) {
//             return animator2;
//         } else if (animator2 == null) {
//             return animator1;
//         } else {
//             AnimatorSet animatorSet = new AnimatorSet();
//             animatorSet.playTogether(animator1, animator2);
//             return animatorSet;
//         }
//     }
// 
// }


import androidx.transition.Transition;
import androidx.transition.TransitionValues;
import com.transitionseverywhere.utils.IntProperty;
import com.transitionseverywhere.utils.TransitionUtils;
import android.animation.Animator;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Property;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
/*
 * 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.transitionseverywhere;




/**
 * This transition tracks changes during scene changes to the
 * {@link View#setBackground(android.graphics.drawable.Drawable) background}
 * property of its target views (when the background is a
 * {@link ColorDrawable}, as well as the
 * {@link TextView#setTextColor(android.content.res.ColorStateList)
 * color} of the text for target TextViews. If the color changes between
 * scenes, the color change is animated.
 */
public class Recolor extends Transition {

    private static final String PROPNAME_BACKGROUND = "android:recolor:background";
    private static final String PROPNAME_TEXT_COLOR = "android:recolor:textColor";
    private static final String[] sTransitionProperties = {
            PROPNAME_BACKGROUND,
            PROPNAME_TEXT_COLOR
    };

    @NonNull
    public static final Property<TextView, Integer> TEXTVIEW_TEXT_COLOR;
    @NonNull
    public static final Property<ColorDrawable, Integer> COLORDRAWABLE_COLOR;

    static {
        TEXTVIEW_TEXT_COLOR = new IntProperty<TextView>() {

            @Override
            public void setValue(@NonNull TextView object, int value) {
                object.setTextColor(value);
            }

            @NonNull
            @Override
            public Integer get(TextView object) {
                return 0;
            }

        }.optimize();
// Path: library(1.x)/src/main/java/com/transitionseverywhere/utils/IntProperty.java
// @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
// public abstract class IntProperty<T> extends Property<T, Integer> {
// 
//     public IntProperty() {
//         super(Integer.class, null);
//     }
// 
//     public abstract void setValue(@NonNull T object, int value);
// 
//     @Override
//     final public void set(@NonNull T object, @NonNull Integer value) {
//         setValue(object, value);
//     }
// 
//     /**
//      * Just default realisation. Some of properties can have no getter. Override for real getter
//      */
//     @Override
//     @NonNull
//     public Integer get(T object) {
//         return 0;
//     }
// 
//     @SuppressLint("NewApi")
//     @NonNull
//     public Property<T, Integer> optimize() {
//         if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {
//             return new android.util.IntProperty<T>(null) {
//                 @Override
//                 public void setValue(@NonNull T object, int value) {
//                     IntProperty.this.setValue(object, value);
//                 }
// 
//                 @Override
//                 @NonNull
//                 public Integer get(@NonNull T object) {
//                     return IntProperty.this.get(object);
//                 }
//             };
//         } else {
//             return this;
//         }
//     }
// 
// }
// 
// Path: library/src/main/java/com/transitionseverywhere/utils/TransitionUtils.java
// @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
// public class TransitionUtils {
// 
//     @Nullable
//     public static Animator mergeAnimators(@Nullable Animator animator1, @Nullable Animator animator2) {
//         if (animator1 == null) {
//             return animator2;
//         } else if (animator2 == null) {
//             return animator1;
//         } else {
//             AnimatorSet animatorSet = new AnimatorSet();
//             animatorSet.playTogether(animator1, animator2);
//             return animatorSet;
//         }
//     }
// 
// }


// Path: library/src/main/java/com/transitionseverywhere/Recolor.java
import androidx.transition.Transition;
import androidx.transition.TransitionValues;
import com.transitionseverywhere.utils.IntProperty;
import com.transitionseverywhere.utils.TransitionUtils;
import android.animation.Animator;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Property;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

/*
 * 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.transitionseverywhere;




/**
 * This transition tracks changes during scene changes to the
 * {@link View#setBackground(android.graphics.drawable.Drawable) background}
 * property of its target views (when the background is a
 * {@link ColorDrawable}, as well as the
 * {@link TextView#setTextColor(android.content.res.ColorStateList)
 * color} of the text for target TextViews. If the color changes between
 * scenes, the color change is animated.
 */
public class Recolor extends Transition {

    private static final String PROPNAME_BACKGROUND = "android:recolor:background";
    private static final String PROPNAME_TEXT_COLOR = "android:recolor:textColor";
    private static final String[] sTransitionProperties = {
            PROPNAME_BACKGROUND,
            PROPNAME_TEXT_COLOR
    };

    @NonNull
    public static final Property<TextView, Integer> TEXTVIEW_TEXT_COLOR;
    @NonNull
    public static final Property<ColorDrawable, Integer> COLORDRAWABLE_COLOR;

    static {
        TEXTVIEW_TEXT_COLOR = new IntProperty<TextView>() {

            @Override
            public void setValue(@NonNull TextView object, int value) {
                object.setTextColor(value);
            }

            @NonNull
            @Override
            public Integer get(TextView object) {
                return 0;
            }

        }.optimize();
        COLORDRAWABLE_COLOR = new IntProperty<ColorDrawable>() {