aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/SkARFingerPainting.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform_tools/android/apps/skar_java/src/main/java/com/google/skar/SkARFingerPainting.java')
-rw-r--r--platform_tools/android/apps/skar_java/src/main/java/com/google/skar/SkARFingerPainting.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/SkARFingerPainting.java b/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/SkARFingerPainting.java
new file mode 100644
index 0000000000..6d3d0582a4
--- /dev/null
+++ b/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/SkARFingerPainting.java
@@ -0,0 +1,56 @@
+package com.google.skar;
+
+import android.graphics.Matrix;
+import android.graphics.Path;
+import android.graphics.PointF;
+
+public class SkARFingerPainting { ;
+ public Path path = new Path();
+
+ private int numberOfPoints = 0;
+
+ // Holds the model matrix of the first point added to such that the path can be drawn at the
+ // model location (i.e on the Plane)
+ private float[] modelMatrix;
+
+ // Holds the inverse model matrix of the first point that was added such that the path is drawn
+ // first at (0, 0)
+ private float[] inverseModelMatrix;
+
+ public SkARFingerPainting() {}
+
+ // Adds another point to the path in Local space (i.e apply InverseModelMatrix to points located
+ // in Global space (e.g hit positions acquired through hit tests)
+ public void addPoint(PointF p) {
+ if (numberOfPoints == 0) {
+ path.moveTo(p.x, p.y);
+ } else {
+ path.lineTo(p.x, p.y);
+ }
+ numberOfPoints++;
+ }
+
+ public boolean isEmpty() {
+ return numberOfPoints == 0;
+ }
+
+ public float[] getModelMatrix() {
+ return modelMatrix;
+ }
+
+ public float[] getRawInverseModelMatrix() {
+ return inverseModelMatrix;
+ }
+
+ public Matrix getInverseModelMatrix() {
+ return SkARMatrix.createMatrixFrom4x4(inverseModelMatrix);
+ }
+
+ public void setModelMatrix(float[] m) {
+ modelMatrix = m;
+ }
+
+ public void setInverseModelMatrix(float[] m) {
+ inverseModelMatrix = m;
+ }
+}