diff options
Diffstat (limited to 'platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples')
2 files changed, 36 insertions, 14 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 9732cb1647..98f36fbe1f 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 @@ -46,7 +46,7 @@ public class DrawManager { private ColorFilter lightFilter; private BitmapShader planeShader; public ArrayList<float[]> modelMatrices = new ArrayList<>(); - public SkARFingerPainting fingerPainting = new SkARFingerPainting(); + public SkARFingerPainting fingerPainting = new SkARFingerPainting(false); public void updateViewport(float width, float height) { viewportWidth = width; @@ -65,10 +65,6 @@ public class DrawManager { lightFilter = SkARUtil.createLightCorrectionColorFilter(colorCorr); } - public void updateFingerPainting(PointF p) { - fingerPainting.addPoint(p); - } - // Sample function for drawing a circle public void drawCircle(Canvas canvas) { if (modelMatrices.isEmpty()) { @@ -143,6 +139,10 @@ public class DrawManager { } public void drawFingerPainting(Canvas canvas) { + // Build the path before rendering + fingerPainting.buildPath(); + + // If path empty, return if (fingerPainting.path.isEmpty()) { return; } @@ -166,7 +166,12 @@ public class DrawManager { // Set up paint Paint p = new Paint(); - p.setColor(Color.GREEN); + if (fingerPainting.getSmoothness()) { + p.setColor(Color.CYAN); + } else { + p.setColor(Color.GREEN); + } + p.setStyle(Paint.Style.STROKE); p.setStrokeWidth(30f); p.setAlpha(120); @@ -269,19 +274,24 @@ public class DrawManager { // Set up paint Paint p = new Paint(); - p.setShader(planeShader); - p.setColorFilter(new PorterDuffColorFilter(Color.argb(0.4f, 1, 0, 0), + + if (false) { + //p.setShader(planeShader); + p.setColorFilter(new PorterDuffColorFilter(Color.argb(0.4f, 1, 0, 0), PorterDuff.Mode.SRC_ATOP)); + } p.setColor(Color.RED); p.setAlpha(100); + p.setStrokeWidth(0.01f); + p.setStyle(Paint.Style.STROKE); + if (true) { // Shader local matrix android.graphics.Matrix lm = new android.graphics.Matrix(); lm.setScale(0.00005f, 0.00005f); planeShader.setLocalMatrix(lm); - // Draw dest path canvas.save(); canvas.setMatrix(mvpv); 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 d8161c7979..56b46017e7 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 @@ -104,6 +104,7 @@ public class HelloSkARActivity extends AppCompatActivity implements GLSurfaceVie // 2D Renderer private DrawManager drawManager = new DrawManager(); private DrawingType currentDrawabletype = DrawingType.circle; + private boolean drawSmoothPainting = false; // Temporary matrix allocated here to reduce number of allocations for each frame. private final float[] anchorMatrix = new float[16]; @@ -384,6 +385,10 @@ public class HelloSkARActivity extends AppCompatActivity implements GLSurfaceVie PointF distance = new PointF(point[0] - previousEvent.x, point[2] - previousEvent.y); + if (distance.length() < 0.05f) { + continue; + } + // New point is distance + old point PointF p = new PointF(distance.x * localDistanceScale + drawManager.fingerPainting.previousPoint.x, @@ -466,24 +471,25 @@ public class HelloSkARActivity extends AppCompatActivity implements GLSurfaceVie switch (currentDrawabletype) { case circle: drawManager.drawCircle(canvas); - return; + break; case rect: drawManager.drawRect(canvas); - return; + break; case animation: drawManager.drawAnimatedRoundRect(canvas, radius); - return; + break; case text: drawManager.drawText(canvas, "Android"); - return; + break; default: drawManager.drawCircle(canvas); - return; + break; } } } private void drawFingerPainting(Canvas canvas) { + drawManager.fingerPainting.setSmoothness(drawSmoothPainting); drawManager.drawFingerPainting(canvas); } @@ -499,6 +505,12 @@ public class HelloSkARActivity extends AppCompatActivity implements GLSurfaceVie case R.id.reset_paint: drawManager.fingerPainting.reset(); return true; + case R.id.smooth_paint: + drawSmoothPainting = true; + return true; + case R.id.rough_paint: + drawSmoothPainting = false; + return true; case R.id.draw_circle: currentDrawabletype = DrawingType.circle; return true; |