From 883ed3000e2811b494682d04296f8fce1006f16f Mon Sep 17 00:00:00 2001 From: ziadb Date: Fri, 27 Jul 2018 15:23:50 -0400 Subject: SkAR Java: fixed runtime bugs, better UI Bug: skia: Change-Id: Ibfee885f5ed655c2f838d637406406da90f0c6fd Reviewed-on: https://skia-review.googlesource.com/144033 Reviewed-by: Mike Reed --- .../examples/helloskar/app/FingerPainting.java | 13 ++++---- .../skar/examples/helloskar/app/HelloCanvasAR.java | 24 ++++++------- .../examples/helloskar/rendering/DrawManager.java | 6 ++-- .../src/main/res/drawable-xxhdpi/clear.png | Bin 0 -> 234 bytes .../src/main/res/drawable-xxhdpi/splash.png | Bin 0 -> 269 bytes .../src/main/res/layout/activity_main.xml | 3 ++ .../apps/skar_java/src/main/res/menu/main_menu.xml | 37 ++++++++------------- .../skar_java/src/main/res/menu/platte_bar.xml | 12 +++++-- .../apps/skar_java/src/main/res/values/strings.xml | 12 +++++++ .../apps/skar_java/src/main/res/values/styles.xml | 9 +---- 10 files changed, 59 insertions(+), 57 deletions(-) create mode 100755 platform_tools/android/apps/skar_java/src/main/res/drawable-xxhdpi/clear.png create mode 100644 platform_tools/android/apps/skar_java/src/main/res/drawable-xxhdpi/splash.png (limited to 'platform_tools') diff --git a/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/app/FingerPainting.java b/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/app/FingerPainting.java index ac97dfbf77..48b91615d4 100644 --- a/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/app/FingerPainting.java +++ b/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/app/FingerPainting.java @@ -84,14 +84,14 @@ public class FingerPainting { * @param holdTap ScrollEvent associated with the hit test that calls this function * @return true if point was computed and added. False otherwise. */ - public boolean computeNextPoint(float[] hitLocation, GestureHelper.ScrollEvent holdTap) { + public boolean computeNextPoint(float[] hitLocation, float[] modelMat, GestureHelper.ScrollEvent holdTap) { if (isEmpty()) { // If finger painting is empty, then first point is origin. Model matrix // of the finger painting is the model matrix of the first point addPoint(new PointF(0, 0), true); // Get model matrix of first point - setModelMatrix(modelMatrix); + setModelMatrix(modelMat); } else { // Else, construct next point given its distance from previous point float localDistanceScale = 1000; @@ -111,7 +111,7 @@ public class FingerPainting { addPoint(p, holdTap.isStartOfScroll); } previousGlobalPoint[0] = hitLocation[0]; - previousGlobalPoint[1] = hitLocation[1]; + previousGlobalPoint[1] = hitLocation[2]; return true; } @@ -230,6 +230,8 @@ public class FingerPainting { if (nbPts == 2) { p.moveTo(points.get(start).x, points.get(start).y); p.lineTo(points.get(start + 1).x, points.get(start + 1).y); + BuiltPath bp = new BuiltPath(p, c); + paths.add(bp); } else if (nbPts >= 3) { // Else (3 pts +), essentially run deCasteljau p.moveTo(points.get(start).x, points.get(start).y); @@ -243,10 +245,9 @@ public class FingerPainting { } p.lineTo(points.get(finish - 1).x, points.get(finish - 1).y); + BuiltPath bp = new BuiltPath(p, c); + paths.add(bp); } - - BuiltPath bp = new BuiltPath(p, c); - paths.add(bp); } private boolean isEmpty() { return points.isEmpty(); } diff --git a/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/app/HelloCanvasAR.java b/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/app/HelloCanvasAR.java index 10527c79de..56480f671a 100644 --- a/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/app/HelloCanvasAR.java +++ b/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/app/HelloCanvasAR.java @@ -133,12 +133,14 @@ public class HelloCanvasAR extends AppCompatActivity implements GLSurfaceView.Re // Canvas Surface View set up arSurfaceView = findViewById(R.id.canvas_surfaceview); + glSurfaceView = findViewById(R.id.gl_surfaceview); arSurfaceView.bringToFront(); arSurfaceView.setLayerType(View.LAYER_TYPE_HARDWARE, null); holder = arSurfaceView.getHolder(); // Set up tap listener. tapHelper = new GestureHelper(this); + glSurfaceView.setOnTouchListener(tapHelper); // Set up renderer. @@ -308,7 +310,6 @@ public class HelloCanvasAR extends AppCompatActivity implements GLSurfaceView.Re @Override public void onDrawFrame(GL10 gl) { Canvas canvas = null; - holder = null; // Clear screen to notify driver it should not load any pixels from previous frame. GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); @@ -392,7 +393,7 @@ public class HelloCanvasAR extends AppCompatActivity implements GLSurfaceView.Re } } catch (Throwable t) { // Avoid crashing the application due to unhandled exceptions. - if (holder != null && canvas != null) { + if (canvas != null) { holder.unlockCanvasAndPost(canvas); } Log.e(TAG, "Exception on the OpenGL thread", t); @@ -461,7 +462,7 @@ public class HelloCanvasAR extends AppCompatActivity implements GLSurfaceView.Re Matrix.multiplyMV(hitLocation, 0, modelMatrix, 0, hitLocation, 0); - if (! drawManager.fingerPainting.computeNextPoint(hitLocation, holdTap)) { + if (! drawManager.fingerPainting.computeNextPoint(hitLocation, modelMatrix, holdTap)) { // Try to add the next point to the finger painting. If return value // is false, then keep looping continue; @@ -523,19 +524,16 @@ public class HelloCanvasAR extends AppCompatActivity implements GLSurfaceView.Re public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); + + menu.setGroupCheckable(R.id.menu_drawables, true, true); return true; } public boolean onOptionsItemSelected(MenuItem item) { + item.setChecked(!item.isChecked()); switch (item.getItemId()) { - case R.id.reset_paint: - drawManager.fingerPainting.reset(); - return true; case R.id.smooth_paint: - drawManager.drawSmoothPainting = true; - return true; - case R.id.rough_paint: - drawManager.drawSmoothPainting = false; + drawManager.drawSmoothPainting = item.isChecked(); return true; case R.id.draw_circle: drawManager.currentDrawabletype = DrawManager.DrawingType.circle; @@ -543,12 +541,12 @@ public class HelloCanvasAR extends AppCompatActivity implements GLSurfaceView.Re case R.id.draw_rect: drawManager.currentDrawabletype = DrawManager.DrawingType.rect; return true; - case R.id.draw_animation: - drawManager.currentDrawabletype = DrawManager.DrawingType.animation; - return true; case R.id.draw_text: drawManager.currentDrawabletype = DrawManager.DrawingType.text; return true; + case R.id.draw_animation: + drawManager.currentDrawabletype = DrawManager.DrawingType.animation; + return true; default: return super.onOptionsItemSelected(item); } diff --git a/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/rendering/DrawManager.java b/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/rendering/DrawManager.java index 16310bddc1..d31c1a5dfe 100644 --- a/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/rendering/DrawManager.java +++ b/platform_tools/android/apps/skar_java/src/main/java/com/google/skar/examples/helloskar/rendering/DrawManager.java @@ -81,7 +81,7 @@ public class DrawManager { BitmapFactory.decodeStream(context.getAssets().open(gridDistanceTextureName)); // Set up the shader planeShader = new BitmapShader(planeTexture, Shader.TileMode.REPEAT, - Shader.TileMode.REPEAT);); + Shader.TileMode.REPEAT); } /************ ARCore onDrawFrame() calls ********************/ @@ -136,7 +136,7 @@ public class DrawManager { canvas.save(); canvas.setMatrix(CanvasMatrixUtil.createPerspectiveMatrix(modelMatrices.get(0), viewMatrix, projectionMatrix, viewportWidth, viewportHeight)); - canvas.drawRoundRect(0,0, 0.5f, 0.5f, radius, radius, p); + canvas.drawRoundRect(0,0, 0.2f, 0.2f, radius, radius, p); canvas.restore(); } @@ -165,7 +165,7 @@ public class DrawManager { Paint p = new Paint(); float textSize = 100; p.setColorFilter(lightFilter); - p.setARGB(255, 0, 255, 0); + p.setARGB(255, 255, 255, 0); p.setTextSize(textSize); // TODO: Remove scale matrix and scale text directly. Potential unfixed bug in versions < P diff --git a/platform_tools/android/apps/skar_java/src/main/res/drawable-xxhdpi/clear.png b/platform_tools/android/apps/skar_java/src/main/res/drawable-xxhdpi/clear.png new file mode 100755 index 0000000000..b3e45df41d Binary files /dev/null and b/platform_tools/android/apps/skar_java/src/main/res/drawable-xxhdpi/clear.png differ diff --git a/platform_tools/android/apps/skar_java/src/main/res/drawable-xxhdpi/splash.png b/platform_tools/android/apps/skar_java/src/main/res/drawable-xxhdpi/splash.png new file mode 100644 index 0000000000..240b464115 Binary files /dev/null and b/platform_tools/android/apps/skar_java/src/main/res/drawable-xxhdpi/splash.png differ diff --git a/platform_tools/android/apps/skar_java/src/main/res/layout/activity_main.xml b/platform_tools/android/apps/skar_java/src/main/res/layout/activity_main.xml index a642a815ef..b6a1c7030d 100644 --- a/platform_tools/android/apps/skar_java/src/main/res/layout/activity_main.xml +++ b/platform_tools/android/apps/skar_java/src/main/res/layout/activity_main.xml @@ -43,12 +43,15 @@ android:id="@+id/gl_surfaceview" android:layout_width="match_parent" android:layout_height="match_parent" /> + diff --git a/platform_tools/android/apps/skar_java/src/main/res/menu/main_menu.xml b/platform_tools/android/apps/skar_java/src/main/res/menu/main_menu.xml index 3b96c92651..4e75bc47c7 100644 --- a/platform_tools/android/apps/skar_java/src/main/res/menu/main_menu.xml +++ b/platform_tools/android/apps/skar_java/src/main/res/menu/main_menu.xml @@ -17,44 +17,33 @@ --> - - - - - + android:checkable="true" + android:checked="true" + android:title="@string/menu_painting_smooth" /> - - - + + android:checked="true" + android:checkable="true" + android:title="@string/menu_drawable_circle" > + android:title="@string/menu_drawable_rect" > + android:id="@+id/draw_text" + android:title="@string/menu_drawable_text" > + android:id="@+id/draw_animation" + android:title="@string/menu_drawable_animation" > - \ No newline at end of file diff --git a/platform_tools/android/apps/skar_java/src/main/res/menu/platte_bar.xml b/platform_tools/android/apps/skar_java/src/main/res/menu/platte_bar.xml index 0e28cae592..b20ab1ea60 100644 --- a/platform_tools/android/apps/skar_java/src/main/res/menu/platte_bar.xml +++ b/platform_tools/android/apps/skar_java/src/main/res/menu/platte_bar.xml @@ -19,11 +19,17 @@ + android:icon="@drawable/splash" + android:iconTint="@android:color/holo_red_dark" + android:title="@string/palette_red" /> + android:icon="@drawable/splash" + android:iconTint="@android:color/holo_green_dark" + android:title="@string/palette_green" /> + android:icon="@drawable/clear" + android:iconTint="@android:color/black" + android:title="@string/palette_reset" /> \ No newline at end of file diff --git a/platform_tools/android/apps/skar_java/src/main/res/values/strings.xml b/platform_tools/android/apps/skar_java/src/main/res/values/strings.xml index 4a74851e91..8d636f17fe 100644 --- a/platform_tools/android/apps/skar_java/src/main/res/values/strings.xml +++ b/platform_tools/android/apps/skar_java/src/main/res/values/strings.xml @@ -18,4 +18,16 @@ Hello CanvasAR + + + Red + Green + Reset Painting + + + Smooth Painting + Circle + Rect + Text + Animation diff --git a/platform_tools/android/apps/skar_java/src/main/res/values/styles.xml b/platform_tools/android/apps/skar_java/src/main/res/values/styles.xml index 12b2281b57..ced245f41f 100644 --- a/platform_tools/android/apps/skar_java/src/main/res/values/styles.xml +++ b/platform_tools/android/apps/skar_java/src/main/res/values/styles.xml @@ -33,15 +33,8 @@ - - -- cgit v1.2.3