package com.airbnb.lottie; import org.json.JSONObject; class Mask { enum MaskMode { MaskModeAdd, MaskModeSubtract, MaskModeIntersect, MaskModeUnknown } private final MaskMode maskMode; private final AnimatableShapeValue maskPath; private Mask(MaskMode maskMode, AnimatableShapeValue maskPath) { this.maskMode = maskMode; this.maskPath = maskPath; } static class Factory { private Factory() { } static Mask newMask(JSONObject json, LottieComposition composition) { MaskMode maskMode; switch (json.optString("mode")) { case "a": maskMode = MaskMode.MaskModeAdd; break; case "s": maskMode = MaskMode.MaskModeSubtract; break; case "i": maskMode = MaskMode.MaskModeIntersect; break; default: maskMode = MaskMode.MaskModeUnknown; } AnimatableShapeValue maskPath = AnimatableShapeValue.Factory.newInstance( json.optJSONObject("pt"), composition); // TODO: use this // JSONObject opacityJson = json.optJSONObject("o"); // if (opacityJson != null) { // AnimatableIntegerValue opacity = // new AnimatableIntegerValue(opacityJson, composition, false, true); // } return new Mask(maskMode, maskPath); } } @SuppressWarnings("unused") MaskMode getMaskMode() { return maskMode; } AnimatableShapeValue getMaskPath() { return maskPath; } }