blob: fd0c64f54c8f9550c4e369e22f351147d25b7af6 [file] [log] [blame]
package com.airbnb.lottie.model.content;
import android.support.annotation.Nullable;
import android.util.JsonReader;
import android.util.Log;
import com.airbnb.lottie.L;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.content.Content;
import com.airbnb.lottie.animation.content.MergePathsContent;
import com.airbnb.lottie.model.layer.BaseLayer;
import java.io.IOException;
public class MergePaths implements ContentModel {
public enum MergePathsMode {
Merge,
Add,
Subtract,
Intersect,
ExcludeIntersections;
private static MergePathsMode forId(int id) {
switch (id) {
case 1:
return Merge;
case 2:
return Add;
case 3:
return Subtract;
case 4:
return Intersect;
case 5:
return ExcludeIntersections;
default:
return Merge;
}
}
}
private final String name;
private final MergePathsMode mode;
private MergePaths(String name, MergePathsMode mode) {
this.name = name;
this.mode = mode;
}
public String getName() {
return name;
}
public MergePathsMode getMode() {
return mode;
}
@Override @Nullable public Content toContent(LottieDrawable drawable, BaseLayer layer) {
if (!drawable.enableMergePathsForKitKatAndAbove()) {
Log.w(L.TAG, "Animation contains merge paths but they are disabled.");
return null;
}
return new MergePathsContent(this);
}
@Override
public String toString() {
return "MergePaths{" + "mode=" + mode + '}';
}
static class Factory {
private Factory() {
}
static MergePaths newInstance(JsonReader reader) throws IOException {
String name = null;
MergePathsMode mode = null;
while (reader.hasNext()) {
switch (reader.nextName()) {
case "nm":
name = reader.nextString();
break;
case "mm":
mode = MergePathsMode.forId(reader.nextInt());
break;
default:
reader.skipValue();
}
}
return new MergePaths(name, mode);
}
}
}