aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/SkARFingerPainting.java
blob: 6d3d0582a412eddcd84a84d05d8f67bba50880c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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;
    }
}