diff options
Diffstat (limited to 'platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar')
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]); |