aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar
diff options
context:
space:
mode:
Diffstat (limited to 'platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar')
-rw-r--r--platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/DrawManager.java58
-rw-r--r--platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/HelloSkARActivity.java35
2 files changed, 59 insertions, 34 deletions
diff --git a/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/DrawManager.java b/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/DrawManager.java
index 98f36fbe1f..19dbb22057 100644
--- a/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/DrawManager.java
+++ b/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/DrawManager.java
@@ -143,7 +143,7 @@ public class DrawManager {
fingerPainting.buildPath();
// If path empty, return
- if (fingerPainting.path.isEmpty()) {
+ if (fingerPainting.getPaths().isEmpty()) {
return;
}
@@ -164,35 +164,37 @@ public class DrawManager {
float[][] matrices = {scale, initRot, in, viewMatrix, projectionMatrix, SkARMatrix.createViewportMatrix(viewportWidth, viewportHeight)};
android.graphics.Matrix mvpv = SkARMatrix.createMatrixFrom4x4(SkARMatrix.multiplyMatrices4x4(matrices));
- // Set up paint
- Paint p = new Paint();
- if (fingerPainting.getSmoothness()) {
- p.setColor(Color.CYAN);
- } else {
- p.setColor(Color.GREEN);
+ for (Path path : fingerPainting.getPaths()) {
+ if (path.isEmpty()) {
+ continue;
+ }
+ // Set up paint
+ Paint p = new Paint();
+ p.setColor(fingerPainting.getPathColor(path));
+
+ p.setStyle(Paint.Style.STROKE);
+ p.setStrokeWidth(30f);
+ p.setAlpha(120);
+
+ if (true) {
+ // Transform applied through canvas
+ canvas.save();
+ canvas.setMatrix(mvpv);
+ canvas.drawPath(path, p);
+ canvas.restore();
+ } else {
+ // Transform path directly
+ Path pathDst = new Path();
+ path.transform(mvpv, pathDst);
+
+ // Draw dest path
+ canvas.save();
+ canvas.setMatrix(new android.graphics.Matrix());
+ canvas.drawPath(pathDst, p);
+ canvas.restore();
+ }
}
- p.setStyle(Paint.Style.STROKE);
- p.setStrokeWidth(30f);
- p.setAlpha(120);
-
- if (true) {
- // Transform applied through canvas
- canvas.save();
- canvas.setMatrix(mvpv);
- canvas.drawPath(fingerPainting.path, p);
- canvas.restore();
- } else {
- // Transform path directly
- Path pathDst = new Path();
- fingerPainting.path.transform(mvpv, pathDst);
-
- // Draw dest path
- canvas.save();
- canvas.setMatrix(new android.graphics.Matrix());
- canvas.drawPath(pathDst, p);
- canvas.restore();
- }
}
// Sample function for drawing the AR point cloud
diff --git a/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/HelloSkARActivity.java b/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/HelloSkARActivity.java
index 56b46017e7..7032d13e89 100644
--- a/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/HelloSkARActivity.java
+++ b/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/HelloSkARActivity.java
@@ -26,6 +26,9 @@ import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.opengl.Matrix;
import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.design.internal.BottomNavigationMenuView;
+import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
@@ -104,12 +107,12 @@ public class HelloSkARActivity extends AppCompatActivity implements GLSurfaceVie
// 2D Renderer
private DrawManager drawManager = new DrawManager();
private DrawingType currentDrawabletype = DrawingType.circle;
- private boolean drawSmoothPainting = false;
+ private boolean drawSmoothPainting = true;
// Temporary matrix allocated here to reduce number of allocations for each frame.
private final float[] anchorMatrix = new float[16];
- PointF previousEvent;;
+ PointF previousEvent;
// Anchors created from taps used for object placing.
private final ArrayList<Anchor> anchors = new ArrayList<>();
@@ -151,6 +154,26 @@ public class HelloSkARActivity extends AppCompatActivity implements GLSurfaceVie
installRequested = false;
+ BottomNavigationView bottomNav = findViewById(R.id.palette);
+ bottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
+ @Override
+ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.palette_green:
+ drawManager.fingerPainting.setColor(Color.GREEN);
+ return true;
+ case R.id.palette_red:
+ drawManager.fingerPainting.setColor(Color.RED);
+ return true;
+ case R.id.palette_reset:
+ drawManager.fingerPainting.reset();
+ return true;
+ default:
+ return true;
+ }
+ }
+ });
+
// Animator set up
PropertyValuesHolder propertyRadius = PropertyValuesHolder.ofFloat(PROPERTY_RADIUS, 0, 0.5f);
animator = new ValueAnimator();
@@ -353,9 +376,9 @@ public class HelloSkARActivity extends AppCompatActivity implements GLSurfaceVie
drawManager.updateLightColorFilter(colorCorrectionRgba);
// Building finger painting
- MotionEvent holdTap = tapHelper.holdPoll();
+ TapHelper.ScrollEvent holdTap = tapHelper.holdPoll();
if (holdTap != null && camera.getTrackingState() == TrackingState.TRACKING) {
- for (HitResult hit : frame.hitTest(holdTap)) {
+ for (HitResult hit : frame.hitTest(holdTap.e)) {
// Check if any plane was hit, and if it was hit inside the plane polygon
Trackable trackable = hit.getTrackable();
// Creates an anchor if a plane or an oriented point was hit.
@@ -374,7 +397,7 @@ public class HelloSkARActivity extends AppCompatActivity implements GLSurfaceVie
Matrix.multiplyMV(point, 0, gm, 0, point, 0);
if (drawManager.fingerPainting.isEmpty()) {
- drawManager.fingerPainting.addPoint(new PointF(0, 0));
+ drawManager.fingerPainting.addPoint(new PointF(0, 0), true);
// Get model matrix of first point
float[] m = new float[16];
@@ -395,7 +418,7 @@ public class HelloSkARActivity extends AppCompatActivity implements GLSurfaceVie
distance.y * localDistanceScale
+ drawManager.fingerPainting.previousPoint.y);
- drawManager.fingerPainting.addPoint(p);
+ drawManager.fingerPainting.addPoint(p, holdTap.isStartOfScroll);
}
previousEvent = new PointF(point[0], point[2]);