If you think the Android project geoar-app listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
/**
* Copyright 2012 52North Initiative for Geospatial Open Source Software GmbH
*//fromwww.java2s.com
* 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.
*/package org.n52.geoar.view.geoar.gl.mode.features;
import org.apache.http.MethodNotSupportedException;
import org.n52.geoar.view.geoar.gl.mode.BilligerColorShader;
import org.n52.geoar.view.geoar.gl.mode.FeatureShader;
import org.n52.geoar.view.geoar.gl.mode.RenderFeature2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.opengl.GLES20;
/**
*
* @author Arne de Wall
*
*/publicclass NewGridFeature extends RenderFeature2 {
privatefinalint totalSize;
privatefinalint gridSize;
privateint lineColor;
privatefloat thickness = 2.5f;
privateint androidColor = -1;
privatestaticfinal Logger LOG = LoggerFactory
.getLogger(NewGridFeature.class);
public NewGridFeature() {
this(BilligerColorShader.getInstance());
}
public NewGridFeature(FeatureShader renderer) {
this.totalSize = 200;
this.gridSize = 2;
this.drawingMode = GLES20.GL_LINES;
this.renderer = renderer;
}
@Override
publicvoid setColor(float[] colorArray) {
try {
thrownew MethodNotSupportedException(
"Setting Color array is not supported atm");
} catch (MethodNotSupportedException e) { // Lol...
LOG.debug("setColor array is not supported atm");
e.printStackTrace();
}
}
@Override
publicvoid onCreateInGLESThread() {
finalint centerToOrigin = totalSize / 2;
finalint numGridPerStride = totalSize / gridSize; // grids along a line
finalint numGridLinesPerStride = numGridPerStride + 1;
/** count for lines in x and y direction */finalint numTotalGridLines = numGridLinesPerStride * 2;
finalint numGridEndPoints = numTotalGridLines * 2; // num of vertices
finalint numVertices = numGridEndPoints * SIZE_OF_POSITION;
finalint numColorCoords = numGridEndPoints * SIZE_OF_COLOR;
finalfloat[] vertices = newfloat[numVertices];
finalfloat[] colors = newfloat[numColorCoords];
finalfloat[] normals = newfloat[numVertices];
for (int gridlineindex = 0, arrayindex = 0, nextgrid = 0; gridlineindex < numGridLinesPerStride; arrayindex +=12, gridlineindex++, nextgrid += gridSize ){
vertices[arrayindex] = -centerToOrigin;
vertices[arrayindex + 2] = -centerToOrigin + nextgrid;
vertices[arrayindex + 3] = centerToOrigin;
vertices[arrayindex + 5] = -centerToOrigin + nextgrid;
vertices[arrayindex + 6] = -centerToOrigin + nextgrid;
vertices[arrayindex + 8] = -centerToOrigin;
vertices[arrayindex + 9] = -centerToOrigin + nextgrid;
vertices[arrayindex + 11] = centerToOrigin;
}
for (int normalIndex = 1, length = normals.length; normalIndex < length; normalIndex += 3)
normals[normalIndex] = 1.0f;
// if (androidColor != -1) {
// r = Color.red(androidColor);
// g = Color.green(androidColor);
// b = Color.blue(androidColor);
// a = 0.5f;// (alpha == -1 ? Color.alpha(androidColor) : alpha);
// } else {
// r = 1.0f;
// g = 1.0f;
// b = 1.0f;
// a = 0.5f;
// }
for (int i = 0; i < numColorCoords; i += 4) {
colors[i] = 1.0f;
colors[i + 1] = 1.0f;
colors[i + 2] = 1.0f;
colors[i + 3] = 0.75f;
}
setRenderObjectives(vertices, colors, normals, null);
}
@Override
publicvoid onPreRender() {
GLES20.glLineWidth(thickness);
}
@Override
publicvoid setOpenGLPreRenderingSettings() {
// TODO Auto-generated method stub
}
}