package androidx.constraintlayout.widget; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.util.Log; import android.util.TypedValue; import android.util.Xml; import android.view.View; import androidx.core.view.ViewCompat; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import org.xmlpull.v1.XmlPullParser; /* loaded from: classes.dex */ public class ConstraintAttribute { private static final String TAG = "TransitionLayout"; boolean mBooleanValue; private int mColorValue; private float mFloatValue; private int mIntegerValue; private boolean mMethod; String mName; private String mStringValue; private AttributeType mType; public enum AttributeType { INT_TYPE, FLOAT_TYPE, COLOR_TYPE, COLOR_DRAWABLE_TYPE, STRING_TYPE, BOOLEAN_TYPE, DIMENSION_TYPE, REFERENCE_TYPE } private static int clamp(int c) { int i = (c & (~(c >> 31))) - 255; return (i & (i >> 31)) + 255; } public int getColorValue() { return this.mColorValue; } public float getFloatValue() { return this.mFloatValue; } public int getIntegerValue() { return this.mIntegerValue; } public String getName() { return this.mName; } public String getStringValue() { return this.mStringValue; } public AttributeType getType() { return this.mType; } public boolean isBooleanValue() { return this.mBooleanValue; } public boolean isMethod() { return this.mMethod; } public void setColorValue(int value) { this.mColorValue = value; } public void setFloatValue(float value) { this.mFloatValue = value; } public void setIntValue(int value) { this.mIntegerValue = value; } public void setStringValue(String value) { this.mStringValue = value; } public boolean isContinuous() { int i = AnonymousClass1.$SwitchMap$androidx$constraintlayout$widget$ConstraintAttribute$AttributeType[this.mType.ordinal()]; return (i == 1 || i == 2 || i == 3) ? false : true; } public int numberOfInterpolatedValues() { int i = AnonymousClass1.$SwitchMap$androidx$constraintlayout$widget$ConstraintAttribute$AttributeType[this.mType.ordinal()]; return (i == 4 || i == 5) ? 4 : 1; } public float getValueToInterpolate() { switch (this.mType) { case BOOLEAN_TYPE: return this.mBooleanValue ? 1.0f : 0.0f; case STRING_TYPE: throw new RuntimeException("Cannot interpolate String"); case COLOR_TYPE: case COLOR_DRAWABLE_TYPE: throw new RuntimeException("Color does not have a single color to interpolate"); case INT_TYPE: return this.mIntegerValue; case FLOAT_TYPE: return this.mFloatValue; case DIMENSION_TYPE: return this.mFloatValue; default: return Float.NaN; } } public void getValuesToInterpolate(float[] ret) { switch (this.mType) { case BOOLEAN_TYPE: ret[0] = this.mBooleanValue ? 1.0f : 0.0f; return; case STRING_TYPE: throw new RuntimeException("Color does not have a single color to interpolate"); case COLOR_TYPE: case COLOR_DRAWABLE_TYPE: int i = (this.mColorValue >> 24) & 255; float pow = (float) Math.pow(((r0 >> 16) & 255) / 255.0f, 2.2d); float pow2 = (float) Math.pow(((r0 >> 8) & 255) / 255.0f, 2.2d); float pow3 = (float) Math.pow((r0 & 255) / 255.0f, 2.2d); ret[0] = pow; ret[1] = pow2; ret[2] = pow3; ret[3] = i / 255.0f; return; case INT_TYPE: ret[0] = this.mIntegerValue; return; case FLOAT_TYPE: ret[0] = this.mFloatValue; return; case DIMENSION_TYPE: ret[0] = this.mFloatValue; return; default: return; } } public void setValue(float[] value) { switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$widget$ConstraintAttribute$AttributeType[this.mType.ordinal()]) { case 1: case 6: this.mIntegerValue = (int) value[0]; return; case 2: this.mBooleanValue = ((double) value[0]) > 0.5d; return; case 3: throw new RuntimeException("Color does not have a single color to interpolate"); case 4: case 5: int HSVToColor = Color.HSVToColor(value); this.mColorValue = HSVToColor; this.mColorValue = (clamp((int) (value[3] * 255.0f)) << 24) | (HSVToColor & ViewCompat.MEASURED_SIZE_MASK); return; case 7: this.mFloatValue = value[0]; return; case 8: this.mFloatValue = value[0]; return; default: return; } } public boolean diff(ConstraintAttribute constraintAttribute) { if (constraintAttribute == null || this.mType != constraintAttribute.mType) { return false; } switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$widget$ConstraintAttribute$AttributeType[this.mType.ordinal()]) { case 1: case 6: if (this.mIntegerValue == constraintAttribute.mIntegerValue) { } break; case 2: if (this.mBooleanValue == constraintAttribute.mBooleanValue) { } break; case 3: if (this.mIntegerValue == constraintAttribute.mIntegerValue) { } break; case 4: case 5: if (this.mColorValue == constraintAttribute.mColorValue) { } break; case 7: if (this.mFloatValue == constraintAttribute.mFloatValue) { } break; case 8: if (this.mFloatValue == constraintAttribute.mFloatValue) { } break; } return false; } public ConstraintAttribute(String name, AttributeType attributeType) { this.mMethod = false; this.mName = name; this.mType = attributeType; } public ConstraintAttribute(String name, AttributeType attributeType, Object value, boolean method) { this.mName = name; this.mType = attributeType; this.mMethod = method; setValue(value); } public ConstraintAttribute(ConstraintAttribute source, Object value) { this.mMethod = false; this.mName = source.mName; this.mType = source.mType; setValue(value); } public void setValue(Object value) { switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$widget$ConstraintAttribute$AttributeType[this.mType.ordinal()]) { case 1: case 6: this.mIntegerValue = ((Integer) value).intValue(); break; case 2: this.mBooleanValue = ((Boolean) value).booleanValue(); break; case 3: this.mStringValue = (String) value; break; case 4: case 5: this.mColorValue = ((Integer) value).intValue(); break; case 7: this.mFloatValue = ((Float) value).floatValue(); break; case 8: this.mFloatValue = ((Float) value).floatValue(); break; } } public static HashMap extractAttributes(HashMap base, View view) { HashMap hashMap = new HashMap<>(); Class cls = view.getClass(); for (String str : base.keySet()) { ConstraintAttribute constraintAttribute = base.get(str); try { if (str.equals("BackgroundColor")) { hashMap.put(str, new ConstraintAttribute(constraintAttribute, Integer.valueOf(((ColorDrawable) view.getBackground()).getColor()))); } else { hashMap.put(str, new ConstraintAttribute(constraintAttribute, cls.getMethod("getMap" + str, new Class[0]).invoke(view, new Object[0]))); } } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchMethodException e2) { e2.printStackTrace(); } catch (InvocationTargetException e3) { e3.printStackTrace(); } } return hashMap; } public static void setAttributes(View view, HashMap map) { Class cls = view.getClass(); for (String str : map.keySet()) { ConstraintAttribute constraintAttribute = map.get(str); String str2 = constraintAttribute.mMethod ? str : "set" + str; try { switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$widget$ConstraintAttribute$AttributeType[constraintAttribute.mType.ordinal()]) { case 1: cls.getMethod(str2, Integer.TYPE).invoke(view, Integer.valueOf(constraintAttribute.mIntegerValue)); break; case 2: cls.getMethod(str2, Boolean.TYPE).invoke(view, Boolean.valueOf(constraintAttribute.mBooleanValue)); break; case 3: cls.getMethod(str2, CharSequence.class).invoke(view, constraintAttribute.mStringValue); break; case 4: cls.getMethod(str2, Integer.TYPE).invoke(view, Integer.valueOf(constraintAttribute.mColorValue)); break; case 5: Method method = cls.getMethod(str2, Drawable.class); ColorDrawable colorDrawable = new ColorDrawable(); colorDrawable.setColor(constraintAttribute.mColorValue); method.invoke(view, colorDrawable); break; case 6: cls.getMethod(str2, Integer.TYPE).invoke(view, Integer.valueOf(constraintAttribute.mIntegerValue)); break; case 7: cls.getMethod(str2, Float.TYPE).invoke(view, Float.valueOf(constraintAttribute.mFloatValue)); break; case 8: cls.getMethod(str2, Float.TYPE).invoke(view, Float.valueOf(constraintAttribute.mFloatValue)); break; } } catch (IllegalAccessException e) { Log.e(TAG, " Custom Attribute \"" + str + "\" not found on " + cls.getName()); e.printStackTrace(); } catch (NoSuchMethodException e2) { Log.e(TAG, e2.getMessage()); Log.e(TAG, " Custom Attribute \"" + str + "\" not found on " + cls.getName()); Log.e(TAG, cls.getName() + " must have a method " + str2); } catch (InvocationTargetException e3) { Log.e(TAG, " Custom Attribute \"" + str + "\" not found on " + cls.getName()); e3.printStackTrace(); } } } public void applyCustom(View view) { String str; Class cls = view.getClass(); String str2 = this.mName; if (this.mMethod) { str = str2; } else { str = "set" + str2; } try { switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$widget$ConstraintAttribute$AttributeType[this.mType.ordinal()]) { case 1: case 6: cls.getMethod(str, Integer.TYPE).invoke(view, Integer.valueOf(this.mIntegerValue)); break; case 2: cls.getMethod(str, Boolean.TYPE).invoke(view, Boolean.valueOf(this.mBooleanValue)); break; case 3: cls.getMethod(str, CharSequence.class).invoke(view, this.mStringValue); break; case 4: cls.getMethod(str, Integer.TYPE).invoke(view, Integer.valueOf(this.mColorValue)); break; case 5: Method method = cls.getMethod(str, Drawable.class); ColorDrawable colorDrawable = new ColorDrawable(); colorDrawable.setColor(this.mColorValue); method.invoke(view, colorDrawable); break; case 7: cls.getMethod(str, Float.TYPE).invoke(view, Float.valueOf(this.mFloatValue)); break; case 8: cls.getMethod(str, Float.TYPE).invoke(view, Float.valueOf(this.mFloatValue)); break; } } catch (IllegalAccessException e) { Log.e(TAG, " Custom Attribute \"" + str2 + "\" not found on " + cls.getName()); e.printStackTrace(); } catch (NoSuchMethodException e2) { Log.e(TAG, e2.getMessage()); Log.e(TAG, " Custom Attribute \"" + str2 + "\" not found on " + cls.getName()); Log.e(TAG, cls.getName() + " must have a method " + str); } catch (InvocationTargetException e3) { Log.e(TAG, " Custom Attribute \"" + str2 + "\" not found on " + cls.getName()); e3.printStackTrace(); } } public static void parse(Context context, XmlPullParser parser, HashMap custom) { AttributeType attributeType; Object valueOf; TypedArray obtainStyledAttributes = context.obtainStyledAttributes(Xml.asAttributeSet(parser), R.styleable.CustomAttribute); int indexCount = obtainStyledAttributes.getIndexCount(); String str = null; Object obj = null; AttributeType attributeType2 = null; boolean z = false; for (int i = 0; i < indexCount; i++) { int index = obtainStyledAttributes.getIndex(i); if (index == R.styleable.CustomAttribute_attributeName) { str = obtainStyledAttributes.getString(index); if (str != null && str.length() > 0) { str = Character.toUpperCase(str.charAt(0)) + str.substring(1); } } else if (index == R.styleable.CustomAttribute_methodName) { str = obtainStyledAttributes.getString(index); z = true; } else if (index == R.styleable.CustomAttribute_customBoolean) { obj = Boolean.valueOf(obtainStyledAttributes.getBoolean(index, false)); attributeType2 = AttributeType.BOOLEAN_TYPE; } else { if (index == R.styleable.CustomAttribute_customColorValue) { attributeType = AttributeType.COLOR_TYPE; valueOf = Integer.valueOf(obtainStyledAttributes.getColor(index, 0)); } else if (index == R.styleable.CustomAttribute_customColorDrawableValue) { attributeType = AttributeType.COLOR_DRAWABLE_TYPE; valueOf = Integer.valueOf(obtainStyledAttributes.getColor(index, 0)); } else if (index == R.styleable.CustomAttribute_customPixelDimension) { attributeType = AttributeType.DIMENSION_TYPE; valueOf = Float.valueOf(TypedValue.applyDimension(1, obtainStyledAttributes.getDimension(index, 0.0f), context.getResources().getDisplayMetrics())); } else if (index == R.styleable.CustomAttribute_customDimension) { attributeType = AttributeType.DIMENSION_TYPE; valueOf = Float.valueOf(obtainStyledAttributes.getDimension(index, 0.0f)); } else if (index == R.styleable.CustomAttribute_customFloatValue) { attributeType = AttributeType.FLOAT_TYPE; valueOf = Float.valueOf(obtainStyledAttributes.getFloat(index, Float.NaN)); } else if (index == R.styleable.CustomAttribute_customIntegerValue) { attributeType = AttributeType.INT_TYPE; valueOf = Integer.valueOf(obtainStyledAttributes.getInteger(index, -1)); } else if (index == R.styleable.CustomAttribute_customStringValue) { attributeType = AttributeType.STRING_TYPE; valueOf = obtainStyledAttributes.getString(index); } else if (index == R.styleable.CustomAttribute_customReference) { attributeType = AttributeType.REFERENCE_TYPE; int resourceId = obtainStyledAttributes.getResourceId(index, -1); if (resourceId == -1) { resourceId = obtainStyledAttributes.getInt(index, -1); } valueOf = Integer.valueOf(resourceId); } Object obj2 = valueOf; attributeType2 = attributeType; obj = obj2; } } if (str != null && obj != null) { custom.put(str, new ConstraintAttribute(str, attributeType2, obj, z)); } obtainStyledAttributes.recycle(); } }