Transform shape layers for mattes
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
index 4ef1db7..a0c766c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
@@ -20,8 +20,8 @@
public class ShapeLayer extends BaseLayer {
private final Path path = new Path();
- private final List<Path> paths = Collections.emptyList();
private final ContentGroup contentGroup;
+ private List<Path> paths = Collections.emptyList();
ShapeLayer(LottieDrawable lottieDrawable, Layer layerModel) {
super(lottieDrawable, layerModel);
@@ -50,11 +50,19 @@
@Override
public List<Path> getPaths() {
- List<Path> paths = new ArrayList<>(contentGroup.getPaths());
- for (int i = 0; i < paths.size(); i++) {
- paths.get(i).transform(getTransformMatrix());
+ List<Path> contentGroupPaths = contentGroup.getPaths();
+ if (paths.size() != contentGroupPaths.size()) {
+ paths = new ArrayList<>(contentGroupPaths.size());
+ for (int i = 0; i < contentGroupPaths.size(); i++) {
+ paths.add(new Path());
+ }
}
- return contentGroup.getPaths();
+ Matrix matrix = getTransformMatrix();
+ for (int i = 0; i < paths.size(); i++) {
+ contentGroupPaths.get(i).transform(matrix, paths.get(i));
+ }
+
+ return paths;
}
@Override
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
index fb84cd4..dde5ad6 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
@@ -183,11 +183,9 @@
}
public static float dpScale() {
-// if (dpScale == -1) {
-// dpScale = Resources.getSystem().getDisplayMetrics().density;
-// }
-// return dpScale;
- // DO MOT MERGE THIS
- return 1f;
+ if (dpScale == -1) {
+ dpScale = Resources.getSystem().getDisplayMetrics().density;
+ }
+ return dpScale;
}
}