SkAR Java: DrawManager dox and minor changes, removed unnecessary files
Bug: skia:
Change-Id: If1a92c5b70d99233208f7db74f5dda9641b1c65b
Reviewed-on: https://skia-review.googlesource.com/144027
Reviewed-by: Mike Reed <reed@google.com>
diff --git a/platform_tools/android/apps/skar_java/src/main/AndroidManifest.xml b/platform_tools/android/apps/skar_java/src/main/AndroidManifest.xml
index efd40d1..e4dbca5 100644
--- a/platform_tools/android/apps/skar_java/src/main/AndroidManifest.xml
+++ b/platform_tools/android/apps/skar_java/src/main/AndroidManifest.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
+
<!--
- Copyright 2016 Google Inc.
+ Copyright 2018 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,6 +15,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.google.ar.core.examples.java.helloskar">
diff --git a/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.frag b/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.frag
deleted file mode 100644
index d0a4708..0000000
--- a/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.frag
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-precision highp float;
-uniform sampler2D u_Texture;
-uniform vec4 u_dotColor;
-uniform vec4 u_lineColor;
-uniform vec4 u_gridControl; // dotThreshold, lineThreshold, lineFadeShrink, occlusionShrink
-varying vec3 v_TexCoordAlpha;
-
-void main() {
- vec4 control = texture2D(u_Texture, v_TexCoordAlpha.xy);
- float dotScale = v_TexCoordAlpha.z;
- float lineFade = max(0.0, u_gridControl.z * v_TexCoordAlpha.z - (u_gridControl.z - 1.0));
- vec3 color = (control.r * dotScale > u_gridControl.x) ? u_dotColor.rgb
- : (control.g > u_gridControl.y) ? u_lineColor.rgb * lineFade
- : (u_lineColor.rgb * 0.25 * lineFade) ;
- gl_FragColor = vec4(color, v_TexCoordAlpha.z * u_gridControl.w);
-}
diff --git a/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert b/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert
deleted file mode 100644
index 9ac5a6d..0000000
--- a/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-uniform mat4 u_Model;
-uniform mat4 u_ModelViewProjection;
-uniform mat2 u_PlaneUvMatrix;
-uniform vec3 u_Normal;
-
-attribute vec3 a_XZPositionAlpha; // (x, z, alpha)
-
-varying vec3 v_TexCoordAlpha;
-
-void main() {
- vec4 local_pos = vec4(a_XZPositionAlpha.x, 0.0, a_XZPositionAlpha.y, 1.0);
- vec4 world_pos = u_Model * local_pos;
-
- // Construct two vectors that are orthogonal to the normal.
- // This arbitrary choice is not co-linear with either horizontal
- // or vertical plane normals.
- const vec3 arbitrary = vec3(1.0, 1.0, 0.0);
- vec3 vec_u = normalize(cross(u_Normal, arbitrary));
- vec3 vec_v = normalize(cross(u_Normal, vec_u));
-
- // Project vertices in world frame onto vec_u and vec_v.
- vec2 uv = vec2(dot(world_pos.xyz, vec_u), dot(world_pos.xyz, vec_v));
- v_TexCoordAlpha = vec3(u_PlaneUvMatrix * uv, a_XZPositionAlpha.z);
- gl_Position = u_ModelViewProjection * local_pos;
-}
diff --git a/platform_tools/android/apps/skar_java/src/main/assets/shaders/point_cloud.frag b/platform_tools/android/apps/skar_java/src/main/assets/shaders/point_cloud.frag
deleted file mode 100644
index 463d052..0000000
--- a/platform_tools/android/apps/skar_java/src/main/assets/shaders/point_cloud.frag
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-precision mediump float;
-varying vec4 v_Color;
-
-void main() {
- gl_FragColor = v_Color;
-}
diff --git a/platform_tools/android/apps/skar_java/src/main/assets/shaders/point_cloud.vert b/platform_tools/android/apps/skar_java/src/main/assets/shaders/point_cloud.vert
deleted file mode 100644
index 627fc1a..0000000
--- a/platform_tools/android/apps/skar_java/src/main/assets/shaders/point_cloud.vert
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-uniform mat4 u_ModelViewProjection;
-uniform vec4 u_Color;
-uniform float u_PointSize;
-
-attribute vec4 a_Position;
-
-varying vec4 v_Color;
-
-void main() {
- v_Color = u_Color;
- gl_Position = u_ModelViewProjection * vec4(a_Position.xyz, 1.0);
- gl_PointSize = u_PointSize;
-}
diff --git a/platform_tools/android/apps/skar_java/src/main/assets/shaders/screenquad.frag b/platform_tools/android/apps/skar_java/src/main/assets/shaders/screenquad.frag
index 800d723..9efaf99 100644
--- a/platform_tools/android/apps/skar_java/src/main/assets/shaders/screenquad.frag
+++ b/platform_tools/android/apps/skar_java/src/main/assets/shaders/screenquad.frag
@@ -1,5 +1,5 @@
/*
- * Copyright 2017 Google Inc. All Rights Reserved.
+ * Copyright 2018 Google LLC All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@@ -12,6 +12,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
#extension GL_OES_EGL_image_external : require
precision mediump float;
diff --git a/platform_tools/android/apps/skar_java/src/main/assets/shaders/screenquad.vert b/platform_tools/android/apps/skar_java/src/main/assets/shaders/screenquad.vert
index 01c93e3..e0e1d1d 100644
--- a/platform_tools/android/apps/skar_java/src/main/assets/shaders/screenquad.vert
+++ b/platform_tools/android/apps/skar_java/src/main/assets/shaders/screenquad.vert
@@ -1,5 +1,5 @@
/*
- * Copyright 2017 Google Inc. All Rights Reserved.
+ * Copyright 2018 Google LLC All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
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 78791fa..10527c7 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
@@ -514,6 +514,7 @@
private void drawFingerPainting(Canvas canvas) {
drawManager.fingerPainting.setSmoothness(drawManager.drawSmoothPainting);
+ drawManager.fingerPainting.buildPath();
drawManager.drawFingerPainting(canvas);
}
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 35bcf70..16310bd 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
@@ -46,7 +46,7 @@
/**
* Sample class that handles drawing different types of geometry using the matrices provided
- * by ARCore. The matrices are handled by SkARMatrix in order to be passed to the drawing
+ * by ARCore. The matrices are handled by CanvasMatrixUtil in order to be passed to the drawing
* Canvas.
*/
@@ -59,15 +59,32 @@
public DrawManager.DrawingType currentDrawabletype = DrawManager.DrawingType.circle;
public boolean drawSmoothPainting = true;
+ // Camera matrices + viewport info
private float[] projectionMatrix = new float[16];
private float[] viewMatrix = new float[16];
private float viewportWidth;
private float viewportHeight;
+
+ // Paint modifiers
private ColorFilter lightFilter;
private BitmapShader planeShader;
+
+ // Drawables info
public ArrayList<float[]> modelMatrices = new ArrayList<>();
public FingerPainting fingerPainting = new FingerPainting(false);
+ /************ Initilization calls ****************************/
+ public void initializePlaneShader(Context context, String gridDistanceTextureName)
+ throws IOException {
+ // Read the texture.
+ Bitmap planeTexture =
+ BitmapFactory.decodeStream(context.getAssets().open(gridDistanceTextureName));
+ // Set up the shader
+ planeShader = new BitmapShader(planeTexture, Shader.TileMode.REPEAT,
+ Shader.TileMode.REPEAT););
+ }
+
+ /************ ARCore onDrawFrame() calls ********************/
public void updateViewport(float width, float height) {
viewportWidth = width;
viewportHeight = height;
@@ -85,11 +102,14 @@
lightFilter = PaintUtil.createLightCorrectionColorFilter(colorCorr);
}
+ /********** 2D objects drawing functions **********************/
+
// Sample function for drawing a circle
public void drawCircle(Canvas canvas) {
if (modelMatrices.isEmpty()) {
return;
}
+
Paint p = new Paint();
p.setColorFilter(lightFilter);
p.setARGB(180, 100, 0, 0);
@@ -103,7 +123,8 @@
canvas.restore();
}
- // Sample function for drawing an animated round rect
+ // Sample function for drawing an animated round rect.
+ // Radius parameter is animated by the application
public void drawAnimatedRoundRect(Canvas canvas, float radius) {
if (modelMatrices.isEmpty()) {
return;
@@ -127,6 +148,7 @@
Paint p = new Paint();
p.setColorFilter(lightFilter);
p.setARGB(180, 0, 0, 255);
+
canvas.save();
canvas.setMatrix(CanvasMatrixUtil.createPerspectiveMatrix(modelMatrices.get(0),
viewMatrix, projectionMatrix, viewportWidth, viewportHeight));
@@ -146,22 +168,23 @@
p.setARGB(255, 0, 255, 0);
p.setTextSize(textSize);
+ // TODO: Remove scale matrix and scale text directly. Potential unfixed bug in versions < P
float[] scaleMatrix = getTextScaleMatrix(textSize);
float[] rotateMatrix = CanvasMatrixUtil.createXYtoXZRotationMatrix();
float[][] matrices = { scaleMatrix, rotateMatrix, modelMatrices.get(0), viewMatrix,
- projectionMatrix,
- CanvasMatrixUtil.createViewportMatrix(viewportWidth, viewportHeight)};
+ projectionMatrix,
+ CanvasMatrixUtil.createViewportMatrix(viewportWidth,
+ viewportHeight)};
canvas.save();
- canvas.setMatrix(CanvasMatrixUtil.createMatrixFrom4x4(CanvasMatrixUtil.multiplyMatrices4x4(matrices)));
+ canvas.setMatrix(CanvasMatrixUtil.createMatrixFrom4x4(
+ CanvasMatrixUtil.multiplyMatrices4x4(matrices)));
canvas.drawText(text, 0, 0, p);
canvas.restore();
}
+ // Sample function for drawing a built FingerPainting object
public void drawFingerPainting(Canvas canvas) {
- // Build the path before rendering
- fingerPainting.buildPath();
-
// If path empty, return
if (fingerPainting.getPaths().isEmpty()) {
return;
@@ -169,20 +192,24 @@
// Get finger painting model matrix
float[] model = fingerPainting.getModelMatrix();
- float[] in = new float[16];
- Matrix.setIdentityM(in, 0);
- Matrix.translateM(in, 0, model[12], model[13], model[14]);
+ float[] modelTranslate = new float[16]; // stores translate components of model matrix
+ Matrix.setIdentityM(modelTranslate, 0);
+ Matrix.translateM(modelTranslate, 0, model[12], model[13], model[14]);
+ // Rotation onto plane
float[] initRot = CanvasMatrixUtil.createXYtoXZRotationMatrix();
+ // Arbitrary scale for the finger painting
float[] scale = new float[16];
float s = 0.001f;
Matrix.setIdentityM(scale, 0);
Matrix.scaleM(scale, 0, s, s, s);
- // Matrix = mvpv
- float[][] matrices = {scale, initRot, in, viewMatrix, projectionMatrix, CanvasMatrixUtil.createViewportMatrix(viewportWidth, viewportHeight)};
- android.graphics.Matrix mvpv = CanvasMatrixUtil.createMatrixFrom4x4(CanvasMatrixUtil.multiplyMatrices4x4(matrices));
+ // Matrix = mvpv (model, view, projection, viewport)
+ float[][] matrices = {scale, initRot, modelTranslate, viewMatrix, projectionMatrix,
+ CanvasMatrixUtil.createViewportMatrix(viewportWidth, viewportHeight)};
+ android.graphics.Matrix mvpv =
+ CanvasMatrixUtil.createMatrixFrom4x4(CanvasMatrixUtil.multiplyMatrices4x4(matrices));
// Paint set up
Paint p = new Paint();
@@ -194,11 +221,12 @@
if (bp.path.isEmpty()) {
continue;
}
+
p.setColor(bp.color);
// Scaling issues appear to happen when drawing a Path and transforming the Canvas
- // directly with a matrix on Android versions less than P. Ideally we would
- // switch true to be (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
+ // directly with a matrix on Android versions less than P.
+ // TODO: Ideally switch true to be (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
if (true) {
// Transform applied through canvas
@@ -221,14 +249,19 @@
}
+ /*********************** AR Environment drawing functions *************************/
+
// Sample function for drawing the AR point cloud
public void drawPointCloud(Canvas canvas, PointCloud cloud) {
FloatBuffer points = cloud.getPoints();
int numberOfPoints = points.remaining() / 4;
- float[][] matrices = {viewMatrix, projectionMatrix, CanvasMatrixUtil.createViewportMatrix(viewportWidth, viewportHeight)};
+ // Build vpv matrix
+ float[][] matrices = {viewMatrix, projectionMatrix,
+ CanvasMatrixUtil.createViewportMatrix(viewportWidth, viewportHeight)};
float[] vpv = CanvasMatrixUtil.multiplyMatrices4x4(matrices);
+ // Transform points on CPU
float[] pointsToDraw = new float[numberOfPoints * 2];
for (int i = 0; i < numberOfPoints; i++) {
float[] point = {points.get(i * 4), points.get(i * 4 + 1), points.get(i * 4 + 2), 1};
@@ -243,10 +276,7 @@
p.setStrokeWidth(6.0f);
canvas.save();
- float[] id = new float[16];
- Matrix.setIdentityM(id, 0);
- android.graphics.Matrix identity = CanvasMatrixUtil.createMatrixFrom4x4(id);
- canvas.setMatrix(identity);
+ canvas.setMatrix(new android.graphics.Matrix());
canvas.drawPoints(pointsToDraw, p);
canvas.restore();
}
@@ -277,15 +307,18 @@
float[] initRot = CanvasMatrixUtil.createXYtoXZRotationMatrix();
// Matrix = mvpv
- float[][] matrices = {initRot, model, viewMatrix, projectionMatrix, CanvasMatrixUtil.createViewportMatrix(viewportWidth, viewportHeight)};
- android.graphics.Matrix mvpv = CanvasMatrixUtil.createMatrixFrom4x4(CanvasMatrixUtil.multiplyMatrices4x4(matrices));
+ float[][] matrices = {initRot, model, viewMatrix, projectionMatrix,
+ CanvasMatrixUtil.createViewportMatrix(viewportWidth,
+ viewportHeight)};
+ android.graphics.Matrix mvpv = CanvasMatrixUtil.createMatrixFrom4x4(
+ CanvasMatrixUtil.multiplyMatrices4x4(matrices));
- drawPlaneAsPath(canvas, mvpv, plane);
+ drawPlaneOutline(canvas, mvpv, plane);
}
}
- // Helper function that draws an AR plane using a path
- private void drawPlaneAsPath(Canvas canvas, android.graphics.Matrix mvpv, Plane plane) {
+ // Helper function that draws an AR plane's outline using a path
+ private void drawPlaneOutline(Canvas canvas, android.graphics.Matrix mvpv, Plane plane) {
int vertsSize = plane.getPolygon().limit() / 2;
FloatBuffer polygon = plane.getPolygon();
polygon.rewind();
@@ -300,24 +333,66 @@
// Set up paint
Paint p = new Paint();
-
- 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);
+ // Scaling issues appear to happen when drawing a Path and transforming the Canvas
+ // directly with a matrix on Android versions less than P.
+ // TODO: Ideally switch true to be (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
if (true) {
+ // Draw dest path
+ canvas.save();
+ canvas.setMatrix(mvpv);
+ canvas.drawPath(pathSrc, p);
+ canvas.restore();
+ } else {
+ // Build destination path by transforming source path
+ Path pathDst = new Path();
+ pathSrc.transform(mvpv, pathDst);
+
+ // Draw dest path
+ canvas.save();
+ canvas.setMatrix(new android.graphics.Matrix());
+ canvas.drawPath(pathDst, p);
+ canvas.restore();
+ }
+ }
+
+ // Helper function that draws an AR plane using a path + initialized shader
+ private void drawPlaneWithShader(Canvas canvas, android.graphics.Matrix mvpv, Plane plane) {
+ int vertsSize = plane.getPolygon().limit() / 2;
+ FloatBuffer polygon = plane.getPolygon();
+ polygon.rewind();
+
+ // Build source path from polygon data
+ Path pathSrc = new Path();
+ pathSrc.moveTo(polygon.get(0), polygon.get(1));
+ for (int i = 1; i < vertsSize; i++) {
+ pathSrc.lineTo(polygon.get(i * 2), polygon.get(i * 2 + 1));
+ }
+ pathSrc.close();
+
+ // Set up paint
+ Paint p = new Paint();
+ 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);
+
+ // Scaling issues appear to happen when drawing a Path and transforming the Canvas
+ // directly with a matrix on Android versions less than P.
+ // TODO: Ideally switch true to be (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
+ 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);
@@ -342,15 +417,9 @@
}
}
- public void initializePlaneShader(Context context, String gridDistanceTextureName) throws IOException {
- // Read the texture.
- Bitmap planeTexture =
- BitmapFactory.decodeStream(context.getAssets().open(gridDistanceTextureName));
- // Set up the shader
- planeShader = new BitmapShader(planeTexture, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
- planeShader.setLocalMatrix(new android.graphics.Matrix());
- }
-
+ /*************** Misc helpers *************************************/
+ // Returns a scale matrix for drawing text given the size of the text. Workaround that solves
+ // a text size bug not fixed in Android versions < P
private float[] getTextScaleMatrix(float size) {
float scaleFactor = 1 / (size * 10);
float[] initScale = new float[16];
@@ -364,6 +433,7 @@
float cameraX = cameraPose.tx();
float cameraY = cameraPose.ty();
float cameraZ = cameraPose.tz();
+
// Get transformed Y axis of plane's coordinate system.
planePose.getTransformedAxis(1, 1.0f, normal, 0);
// Compute dot product of plane's normal with vector from camera to plane center.
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 a08144a..a642a81 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
@@ -1,5 +1,5 @@
<!--
- Copyright 2016 Google Inc.
+ Copyright 2018 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -13,6 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="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 d4383f9..3b96c92 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
@@ -1,4 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright 2018 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/menu_top">
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 c3e9f0c..0e28cae 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
@@ -1,4 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright 2018 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/palette_red"
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 ed91c5d..4a74851 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
@@ -1,5 +1,7 @@
-<?xml version="1.0" encoding="utf-8"?><!--
- Copyright 2016 Google Inc.
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright 2018 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -13,6 +15,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
<resources>
- <string name="app_name">HelloSkAR Java</string>
+ <string name="app_name">Hello CanvasAR</string>
</resources>
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 60e8bda..12b2281 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
@@ -1,5 +1,5 @@
<!--
- Copyright 2016 Google Inc.
+ Copyright 2018 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -13,6 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
<resources>
<!--
@@ -41,8 +42,6 @@
<style name="BottomNavigation" parent="Widget.Design.BottomNavigationView">
<item name="itemBackground">@android:color/darker_gray</item>
-<!-- <item name="paddingStart">10dp</item>
- <item name="paddingEnd">10dp</item>-->
</style>
</resources>