17 package com.introlab.rtabmap;
19 import java.util.Vector;
20 import java.util.concurrent.locks.ReentrantLock;
22 import android.app.Activity;
23 import android.app.ProgressDialog;
24 import android.opengl.GLES20;
25 import android.opengl.GLSurfaceView;
26 import android.opengl.Matrix;
27 import android.util.Log;
28 import android.widget.Toast;
30 import javax.microedition.khronos.egl.EGLConfig;
31 import javax.microedition.khronos.opengles.GL10;
39 private final float[]
mtrxView =
new float[16];
61 private ReentrantLock
mTextLock =
new ReentrantLock();
65 mProgressDialog = progressDialog;
108 if(mTextManager!=null)
113 mTextChanged =
false;
114 Vector<TextObject> txtcollection =
new Vector<TextObject>();
118 if(mTexts.size() > 0)
120 txtcollection.addAll(mTexts);
130 float[] mvp =
new float[16];
131 Matrix.translateM(mvp, 0, mtrxProjectionAndView, 0, 0, mOffset, 0);
132 mTextManager.
Draw(mvp);
135 if(value != 0 && mProgressDialog != null && mProgressDialog.isShowing())
137 mActivity.runOnUiThread(
new Runnable() {
139 if(!
RTABMapActivity.
DISABLE_LOG) Log.i(
"RTABMapActivity",
"Renderer: dismiss dialog, value received=" + String.valueOf(value));
140 mProgressDialog.dismiss();
147 mActivity.runOnUiThread(
new Runnable() {
151 mToast.makeText(mActivity.getApplicationContext(), String.format(
"Out of Memory!"), Toast.LENGTH_SHORT).show();
158 mActivity.runOnUiThread(
new Runnable() {
162 mToast.makeText(mActivity.getApplicationContext(), String.format(
"Rendering Error!"), Toast.LENGTH_SHORT).show();
168 catch(
final Exception
e)
170 final int stepF =
step;
171 mActivity.runOnUiThread(
new Runnable() {
175 String msg = String.format(
"Rendering error! (exception=%s) step=%d", e.getMessage(), stepF);
176 Log.e(
"RTABMapActivity", msg);
177 mToast.makeText(mActivity.getApplicationContext(), msg, Toast.LENGTH_LONG).show();
201 mSurfaceHeight = (float)height;
204 for(
int i=0;i<16;i++)
206 mtrxProjection[i] = 0.0f;
208 mtrxProjectionAndView[i] = 0.0f;
212 Matrix.orthoM(mtrxProjection, 0, 0
f, width, 0.0
f, height, 0, 50);
215 Matrix.setLookAtM(mtrxView, 0, 0
f, 0
f, 1
f, 0
f, 0
f, 0
f, 0
f, 1.0
f, 0.0
f);
218 Matrix.multiplyMM(mtrxProjectionAndView, 0, mtrxProjection, 0, mtrxView, 0);
236 if(mTextManager != null && mSurfaceHeight > 0.0
f)
238 Vector<TextObject> textObjects =
new Vector<TextObject>();
242 for(
int i=0;i<texts.length; ++i)
244 if(texts[i]!=null && texts[i].
length()>0)
247 textObjects.add(txt);
255 mTexts = textObjects;
267 if(mTextManager != null)
static boolean DISABLE_LOG
static native int render(long nativeApplication)
ARCoreSharedCamera mCamera
void run(class_loader::ClassLoader *loader)
final float [] mtrxProjection
GLM_FUNC_DECL genType e()
void setProgressDialog(ProgressDialog progressDialog)
GLM_FUNC_DECL genType step(genType const &edge, genType const &x)
static native void setupGraphic(long nativeApplication, int width, int height)
void onDrawFrame(GL10 useGLES20instead)
static long nativeApplication
void onDisplayChanged(int displayId)
void updateTexts(String[] texts)
void setColor(float color)
void onSurfaceChanged(GL10 useGLES20instead, int width, int height)
final float [] mtrxProjectionAndView
void setTextColor(float color)
void setCamera(ARCoreSharedCamera camera)
ProgressDialog mProgressDialog
static native void initGlContent(long nativeApplication)
static RTABMapActivity mActivity
Renderer(RTABMapActivity c)
DisplayRotationHelper mDisplayRotationHelper
void PrepareDraw(Vector< TextObject > txtcollection)
void updateSessionIfNeeded(ARCoreSharedCamera session)
Vector< TextObject > mTexts
void onSurfaceCreated(GL10 useGLES20instead, EGLConfig config)
GLM_FUNC_DECL genType::value_type length(genType const &x)
void setOffset(int offset)
void setToast(Toast toast)
void onSurfaceChanged(int width, int height)