Default to MaskModeAdd but warn if another is set With the new way Lottie handles masks, each type is handled explicitly. The existing behavior defaulted to mask mode add so this restores that behavior.
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/Mask.java b/lottie/src/main/java/com/airbnb/lottie/model/content/Mask.java index 32cb1c5..051afe2 100644 --- a/lottie/src/main/java/com/airbnb/lottie/model/content/Mask.java +++ b/lottie/src/main/java/com/airbnb/lottie/model/content/Mask.java
@@ -1,7 +1,9 @@ package com.airbnb.lottie.model.content; import android.util.JsonReader; +import android.util.Log; +import com.airbnb.lottie.L; import com.airbnb.lottie.LottieComposition; import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; import com.airbnb.lottie.model.animatable.AnimatableShapeValue; @@ -12,8 +14,7 @@ public enum MaskMode { MaskModeAdd, MaskModeSubtract, - MaskModeIntersect, - MaskModeUnknown + MaskModeIntersect } private final MaskMode maskMode; @@ -38,7 +39,8 @@ reader.beginObject(); while (reader.hasNext()) { - switch (reader.nextName()) { + String mode = reader.nextName(); + switch (mode) { case "mode": switch (reader.nextString()) { case "a": @@ -51,7 +53,8 @@ maskMode = MaskMode.MaskModeIntersect; break; default: - maskMode = MaskMode.MaskModeUnknown; + Log.w(L.TAG, "Unknown mask mode " + mode + ". Defaulting to Add."); + maskMode = MaskMode.MaskModeAdd; } break; case "pt":
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java index 111ed3a..96276a3 100644 --- a/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java +++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
@@ -25,7 +25,6 @@ import com.airbnb.lottie.model.KeyPath; import com.airbnb.lottie.model.KeyPathElement; import com.airbnb.lottie.model.content.Mask; -import com.airbnb.lottie.utils.Utils; import com.airbnb.lottie.value.LottieValueCallback; import java.util.ArrayList; @@ -272,8 +271,6 @@ case MaskModeIntersect: // TODO return; - case MaskModeUnknown: - return; case MaskModeAdd: default: path.computeBounds(tempMaskBoundsRect, false);