| package com.airbnb.lottie.model.content; |
| |
| import android.graphics.PointF; |
| import android.util.JsonReader; |
| |
| import com.airbnb.lottie.LottieComposition; |
| import com.airbnb.lottie.LottieDrawable; |
| import com.airbnb.lottie.animation.content.Content; |
| import com.airbnb.lottie.animation.content.RectangleContent; |
| import com.airbnb.lottie.model.animatable.AnimatableFloatValue; |
| import com.airbnb.lottie.model.animatable.AnimatablePathValue; |
| import com.airbnb.lottie.model.animatable.AnimatablePointValue; |
| import com.airbnb.lottie.model.animatable.AnimatableValue; |
| import com.airbnb.lottie.model.layer.BaseLayer; |
| |
| import java.io.IOException; |
| |
| public class RectangleShape implements ContentModel { |
| private final String name; |
| private final AnimatableValue<PointF, PointF> position; |
| private final AnimatablePointValue size; |
| private final AnimatableFloatValue cornerRadius; |
| |
| private RectangleShape(String name, AnimatableValue<PointF, PointF> position, |
| AnimatablePointValue size, AnimatableFloatValue cornerRadius) { |
| this.name = name; |
| this.position = position; |
| this.size = size; |
| this.cornerRadius = cornerRadius; |
| } |
| |
| static class Factory { |
| private Factory() { |
| } |
| |
| static RectangleShape newInstance( |
| JsonReader reader, LottieComposition composition) throws IOException { |
| String name = null; |
| AnimatableValue<PointF, PointF> position = null; |
| AnimatablePointValue size = null; |
| AnimatableFloatValue roundedness = null; |
| |
| while (reader.hasNext()) { |
| switch (reader.nextName()) { |
| case "nm": |
| name = reader.nextString(); |
| break; |
| case "p": |
| position = |
| AnimatablePathValue.createAnimatablePathOrSplitDimensionPath(reader, composition); |
| break; |
| case "s": |
| size = AnimatablePointValue.Factory.newInstance(reader, composition); |
| break; |
| case "r": |
| roundedness = AnimatableFloatValue.Factory.newInstance(reader, composition); |
| break; |
| default: |
| reader.skipValue(); |
| } |
| } |
| |
| return new RectangleShape(name, position, size, roundedness); |
| } |
| } |
| |
| public String getName() { |
| return name; |
| } |
| |
| public AnimatableFloatValue getCornerRadius() { |
| return cornerRadius; |
| } |
| |
| public AnimatablePointValue getSize() { |
| return size; |
| } |
| |
| public AnimatableValue<PointF, PointF> getPosition() { |
| return position; |
| } |
| |
| @Override public Content toContent(LottieDrawable drawable, BaseLayer layer) { |
| return new RectangleContent(drawable, layer, this); |
| } |
| |
| @Override public String toString() { |
| return "RectangleShape{position=" + position + |
| ", size=" + size + |
| '}'; |
| } |
| } |