aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples
diff options
context:
space:
mode:
Diffstat (limited to 'platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples')
-rw-r--r--platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/DrawManager.java28
-rw-r--r--platform_tools/android/apps/skar_java/src/main/java/com/google/ar/core/examples/java/helloskar/HelloSkARActivity.java22
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;