abstraction step 2
This commit is contained in:
parent
87759817ab
commit
62a4079957
@ -76,150 +76,138 @@ int32_t m_previous_y = -1;
|
|||||||
int64_t m_previousTime = 0;
|
int64_t m_previousTime = 0;
|
||||||
bool m_previousDouble = false;
|
bool m_previousDouble = false;
|
||||||
|
|
||||||
extern "C"
|
|
||||||
|
/* Call to initialize the graphics state */
|
||||||
|
void EWOL_NativeInit(void)
|
||||||
{
|
{
|
||||||
|
EWOL_INFO("Init : Start All Application");
|
||||||
|
gAppAlive = 1;
|
||||||
|
sDemoStopped = 0;
|
||||||
|
sTimeOffsetInit = 0;
|
||||||
|
ewol::TextureOGLContext(true);
|
||||||
|
}
|
||||||
|
|
||||||
/* Call to initialize the graphics state */
|
|
||||||
void Java_com_example_ewolAbstraction_EwolRenderer_nativeInit( JNIEnv* env )
|
void EWOL_NativeResize(int w, int h )
|
||||||
{
|
{
|
||||||
EWOL_INFO("Init : Start All Application");
|
m_width = w;
|
||||||
gAppAlive = 1;
|
m_height = h;
|
||||||
sDemoStopped = 0;
|
EWOL_INFO("Resize w=" << w << " h=" << h);
|
||||||
sTimeOffsetInit = 0;
|
ewol::TextureOGLContext(false);
|
||||||
ewol::TextureOGLContext(true);
|
ewol::TextureOGLContext(true);
|
||||||
|
if (NULL != m_uniqueWindows) {
|
||||||
|
m_uniqueWindows->CalculateSize((etkFloat_t)m_width, (etkFloat_t)m_height);
|
||||||
|
m_uniqueWindows->SetOrigin(0.0, 0.0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Call to finalize the graphics state */
|
||||||
|
void EWOL_NativeDone(void)
|
||||||
|
{
|
||||||
|
EWOL_INFO("Renderer : Close All Application");
|
||||||
|
ewol::TextureOGLContext(false);
|
||||||
|
}
|
||||||
|
|
||||||
void Java_com_example_ewolAbstraction_EwolRenderer_nativeResize( JNIEnv* env, jobject thiz, jint w, jint h )
|
void EWOL_NativeEventInputMotion(int pointerID, float x, float y )
|
||||||
{
|
{
|
||||||
m_width = w;
|
//EWOL_INFO("Event : Input Motion ID=" << pointerID << " x=" << x << " y=" << y);
|
||||||
m_height = h;
|
if(0<=pointerID && pointerID < NB_MAX_INPUT ) {
|
||||||
EWOL_INFO("Resize w=" << w << " h=" << h);
|
if (true == inputIsPressed[pointerID]) {
|
||||||
ewol::TextureOGLContext(false);
|
if(NULL != m_uniqueWindows) {
|
||||||
ewol::TextureOGLContext(true);
|
//EWOL_DEBUG("ANDROID event: bt=" << pointerID+1 << " ** = \"MotionNotify\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
||||||
if (NULL != m_uniqueWindows) {
|
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_MOVE, (etkFloat_t)x, (etkFloat_t)y);
|
||||||
m_uniqueWindows->CalculateSize((etkFloat_t)m_width, (etkFloat_t)m_height);
|
|
||||||
m_uniqueWindows->SetOrigin(0.0, 0.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Call to finalize the graphics state */
|
|
||||||
void Java_com_example_ewolAbstraction_EwolRenderer_nativeDone( JNIEnv* env )
|
|
||||||
{
|
|
||||||
EWOL_INFO("Renderer : Close All Application");
|
|
||||||
ewol::TextureOGLContext(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Java_com_example_ewolAbstraction_EwolGLSurfaceView_nativeEventInputMotion( JNIEnv* env, jobject thiz, jint pointerID, jfloat x, jfloat y )
|
|
||||||
{
|
|
||||||
//EWOL_INFO("Event : Input Motion ID=" << pointerID << " x=" << x << " y=" << y);
|
|
||||||
if(0<=pointerID && pointerID < NB_MAX_INPUT ) {
|
|
||||||
if (true == inputIsPressed[pointerID]) {
|
|
||||||
if(NULL != m_uniqueWindows) {
|
|
||||||
//EWOL_DEBUG("ANDROID event: bt=" << pointerID+1 << " ** = \"MotionNotify\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
|
||||||
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_MOVE, (etkFloat_t)x, (etkFloat_t)y);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Java_com_example_ewolAbstraction_EwolGLSurfaceView_nativeEventInputState( JNIEnv* env, jobject thiz, jint pointerID, jboolean isUp, jfloat x, jfloat y )
|
void EWOL_NativeEventInputState(int pointerID, bool isUp, float x, float y )
|
||||||
{
|
{
|
||||||
if (isUp) {
|
if (isUp) {
|
||||||
//EWOL_INFO("Event : Input ID=" << pointerID << " [DOWN] x=" << x << " y=" << y);
|
//EWOL_INFO("Event : Input ID=" << pointerID << " [DOWN] x=" << x << " y=" << y);
|
||||||
if(0<=pointerID && pointerID < NB_MAX_INPUT ) {
|
if(0<=pointerID && pointerID < NB_MAX_INPUT ) {
|
||||||
// Send Down message
|
// Send Down message
|
||||||
if (NULL != m_uniqueWindows) {
|
if (NULL != m_uniqueWindows) {
|
||||||
//EWOL_DEBUG("ANDROID bt=" << pointerID+1 << " event : **=\"ButtonPress\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
//EWOL_DEBUG("ANDROID bt=" << pointerID+1 << " event : **=\"ButtonPress\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
||||||
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_DOWN, (etkFloat_t)x, (etkFloat_t)y);
|
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_DOWN, (etkFloat_t)x, (etkFloat_t)y);
|
||||||
}
|
}
|
||||||
// Check double or triple click event ...
|
// Check double or triple click event ...
|
||||||
m_previousDown_x = x;
|
m_previousDown_x = x;
|
||||||
m_previousDown_y = y;
|
m_previousDown_y = y;
|
||||||
if (m_previousBouttonId != pointerID+1) {
|
if (m_previousBouttonId != pointerID+1) {
|
||||||
m_previousBouttonId = pointerID+1;
|
m_previousBouttonId = pointerID+1;
|
||||||
|
m_previous_x = -1;
|
||||||
|
m_previous_y = -1;
|
||||||
|
m_previousTime = 0;
|
||||||
|
m_previousDouble = false;
|
||||||
|
} else {
|
||||||
|
if( abs(m_previous_x - x) < OFFSET_MOVE_CLICKED
|
||||||
|
&& abs(m_previous_y - y) < OFFSET_MOVE_CLICKED )
|
||||||
|
{
|
||||||
|
// nothink to do ... wait up ...
|
||||||
|
} else {
|
||||||
m_previous_x = -1;
|
m_previous_x = -1;
|
||||||
m_previous_y = -1;
|
m_previous_y = -1;
|
||||||
m_previousTime = 0;
|
m_previousTime = 0;
|
||||||
m_previousDouble = false;
|
m_previousDouble = false;
|
||||||
} else {
|
}
|
||||||
if( abs(m_previous_x - x) < OFFSET_MOVE_CLICKED
|
}
|
||||||
&& abs(m_previous_y - y) < OFFSET_MOVE_CLICKED )
|
}
|
||||||
|
} else {
|
||||||
|
//EWOL_INFO("Event : Input ID=" << pointerID << " [UP] x=" << x << " y=" << y);
|
||||||
|
if(0<=pointerID && pointerID < NB_MAX_INPUT ) {
|
||||||
|
// Send Down message
|
||||||
|
if (NULL != m_uniqueWindows) {
|
||||||
|
//EWOL_DEBUG("ANDROID bt=" << pointerID+1 << " event : **=\"ButtonRelease\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
||||||
|
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_UP, (etkFloat_t)x, (etkFloat_t)y);
|
||||||
|
}
|
||||||
|
if (m_previousBouttonId != pointerID+1) {
|
||||||
|
m_previousDown_x = -1;
|
||||||
|
m_previousDown_y = -1;
|
||||||
|
m_previousBouttonId = 0;
|
||||||
|
m_previous_x = -1;
|
||||||
|
m_previous_y = -1;
|
||||||
|
m_previousTime = 0;
|
||||||
|
m_previousDouble = false;
|
||||||
|
} else {
|
||||||
|
int64_t currentTime = times(NULL); // return the tic in 10ms
|
||||||
|
//EWOL_DEBUG("time is : " << currentTime << " "<< currentTime/100 <<"s " << (currentTime%100)*10 << "ms");
|
||||||
|
if (currentTime - m_previousTime >= SEPARATED_CLICK_TIME) {
|
||||||
|
//check if the same area click :
|
||||||
|
if( abs(m_previousDown_x - x) < OFFSET_MOVE_CLICKED
|
||||||
|
&& abs(m_previousDown_y - y) < OFFSET_MOVE_CLICKED )
|
||||||
{
|
{
|
||||||
// nothink to do ... wait up ...
|
// might generate an sigle event :
|
||||||
|
//EWOL_DEBUG("ANDROID event : ** = \"ButtonClickedSingle\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
||||||
|
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_SINGLE, (etkFloat_t)x, (etkFloat_t)y);
|
||||||
|
m_previous_x = m_previousDown_x;
|
||||||
|
m_previous_y = m_previousDown_y;
|
||||||
|
m_previousTime = currentTime;
|
||||||
} else {
|
} else {
|
||||||
|
// reset values ...
|
||||||
|
m_previousDown_x = -1;
|
||||||
|
m_previousDown_y = -1;
|
||||||
|
m_previousBouttonId = 0;
|
||||||
m_previous_x = -1;
|
m_previous_x = -1;
|
||||||
m_previous_y = -1;
|
m_previous_y = -1;
|
||||||
m_previousTime = 0;
|
m_previousTime = 0;
|
||||||
m_previousDouble = false;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//EWOL_INFO("Event : Input ID=" << pointerID << " [UP] x=" << x << " y=" << y);
|
|
||||||
if(0<=pointerID && pointerID < NB_MAX_INPUT ) {
|
|
||||||
// Send Down message
|
|
||||||
if (NULL != m_uniqueWindows) {
|
|
||||||
//EWOL_DEBUG("ANDROID bt=" << pointerID+1 << " event : **=\"ButtonRelease\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
|
||||||
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_UP, (etkFloat_t)x, (etkFloat_t)y);
|
|
||||||
}
|
|
||||||
if (m_previousBouttonId != pointerID+1) {
|
|
||||||
m_previousDown_x = -1;
|
|
||||||
m_previousDown_y = -1;
|
|
||||||
m_previousBouttonId = 0;
|
|
||||||
m_previous_x = -1;
|
|
||||||
m_previous_y = -1;
|
|
||||||
m_previousTime = 0;
|
|
||||||
m_previousDouble = false;
|
m_previousDouble = false;
|
||||||
} else {
|
} else {
|
||||||
int64_t currentTime = times(NULL); // return the tic in 10ms
|
// TODO : the double ckick does not work, I need to check this later ... if needed
|
||||||
//EWOL_DEBUG("time is : " << currentTime << " "<< currentTime/100 <<"s " << (currentTime%100)*10 << "ms");
|
//check if the same area click :
|
||||||
if (currentTime - m_previousTime >= SEPARATED_CLICK_TIME) {
|
if( abs(m_previous_x - x) < OFFSET_MOVE_CLICKED_DOUBLE
|
||||||
//check if the same area click :
|
&& abs(m_previous_y - y) < OFFSET_MOVE_CLICKED_DOUBLE )
|
||||||
if( abs(m_previousDown_x - x) < OFFSET_MOVE_CLICKED
|
{
|
||||||
&& abs(m_previousDown_y - y) < OFFSET_MOVE_CLICKED )
|
// might generate an sigle event :
|
||||||
{
|
if (false == m_previousDouble) {
|
||||||
// might generate an sigle event :
|
//EWOL_DEBUG("ANDROID event : ** = \"ButtonClickedDouble\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
||||||
//EWOL_DEBUG("ANDROID event : ** = \"ButtonClickedSingle\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_DOUBLE, (etkFloat_t)x, (etkFloat_t)y);
|
||||||
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_SINGLE, (etkFloat_t)x, (etkFloat_t)y);
|
|
||||||
m_previous_x = m_previousDown_x;
|
|
||||||
m_previous_y = m_previousDown_y;
|
|
||||||
m_previousTime = currentTime;
|
m_previousTime = currentTime;
|
||||||
|
m_previousDouble = true;
|
||||||
} else {
|
} else {
|
||||||
// reset values ...
|
//EWOL_DEBUG("ANDROID event : ** = \"ButtonClickedTriple\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
||||||
m_previousDown_x = -1;
|
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_TRIPLE, (etkFloat_t)x, (etkFloat_t)y);
|
||||||
m_previousDown_y = -1;
|
|
||||||
m_previousBouttonId = 0;
|
|
||||||
m_previous_x = -1;
|
|
||||||
m_previous_y = -1;
|
|
||||||
m_previousTime = 0;
|
|
||||||
}
|
|
||||||
m_previousDouble = false;
|
|
||||||
} else {
|
|
||||||
// TODO : the double ckick does not work, I need to check this later ... if needed
|
|
||||||
//check if the same area click :
|
|
||||||
if( abs(m_previous_x - x) < OFFSET_MOVE_CLICKED_DOUBLE
|
|
||||||
&& abs(m_previous_y - y) < OFFSET_MOVE_CLICKED_DOUBLE )
|
|
||||||
{
|
|
||||||
// might generate an sigle event :
|
|
||||||
if (false == m_previousDouble) {
|
|
||||||
//EWOL_DEBUG("ANDROID event : ** = \"ButtonClickedDouble\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
|
||||||
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_DOUBLE, (etkFloat_t)x, (etkFloat_t)y);
|
|
||||||
m_previousTime = currentTime;
|
|
||||||
m_previousDouble = true;
|
|
||||||
} else {
|
|
||||||
//EWOL_DEBUG("ANDROID event : ** = \"ButtonClickedTriple\" (" << (etkFloat_t)x << "," << (etkFloat_t)y << ")");
|
|
||||||
m_uniqueWindows->GenEventInput(pointerID+1, ewol::EVENT_INPUT_TYPE_TRIPLE, (etkFloat_t)x, (etkFloat_t)y);
|
|
||||||
// reset values ...
|
|
||||||
m_previousDown_x = -1;
|
|
||||||
m_previousDown_y = -1;
|
|
||||||
m_previousBouttonId = 0;
|
|
||||||
m_previous_x = -1;
|
|
||||||
m_previous_y = -1;
|
|
||||||
m_previousTime = 0;
|
|
||||||
m_previousDouble = false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// reset values ...
|
// reset values ...
|
||||||
m_previousDown_x = -1;
|
m_previousDown_x = -1;
|
||||||
m_previousDown_y = -1;
|
m_previousDown_y = -1;
|
||||||
@ -229,93 +217,100 @@ extern "C"
|
|||||||
m_previousTime = 0;
|
m_previousTime = 0;
|
||||||
m_previousDouble = false;
|
m_previousDouble = false;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// reset values ...
|
||||||
|
m_previousDown_x = -1;
|
||||||
|
m_previousDown_y = -1;
|
||||||
|
m_previousBouttonId = 0;
|
||||||
|
m_previous_x = -1;
|
||||||
|
m_previous_y = -1;
|
||||||
|
m_previousTime = 0;
|
||||||
|
m_previousDouble = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Java_com_example_ewolAbstraction_EwolGLSurfaceView_nativeEventUnknow( JNIEnv* env, jobject thiz, jint eventID)
|
|
||||||
{
|
|
||||||
EWOL_WARNING("Event : Unknow ID=" << eventID);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Java_com_example_ewolAbstraction_EwolGLSurfaceView_nativeParamSetArchiveDir( JNIEnv* env, jobject thiz, jint mode, jstring myString)
|
|
||||||
{
|
|
||||||
const char* str = env->GetStringUTFChars(myString,0);
|
|
||||||
switch(mode)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
EWOL_WARNING("Directory APK : path=" << str);
|
|
||||||
etk::SetBaseFolderData(str);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
EWOL_WARNING("Directory mode=FILE path=" << str);
|
|
||||||
etk::SetBaseFolderDataUser(str);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
EWOL_WARNING("Directory mode=CACHE path=" << str);
|
|
||||||
etk::SetBaseFolderCache(str);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
EWOL_WARNING("Directory mode=EXTERNAL_CACHE path=" << str);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
EWOL_WARNING("Directory mode=???? path=" << str);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//env->ReleaseStringUTFChars(str,myString,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static bool isAlreadyInit = false;
|
|
||||||
|
|
||||||
void Java_com_example_ewolAbstraction_EwolGLSurfaceView_nativeApplicationInit( JNIEnv* env)
|
|
||||||
{
|
|
||||||
EWOL_WARNING("Event : Init Application");
|
|
||||||
if (false == isAlreadyInit) {
|
|
||||||
ewol::Init(0, NULL);
|
|
||||||
APP_Init(0, NULL);
|
|
||||||
isAlreadyInit = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Java_com_example_ewolAbstraction_EwolGLSurfaceView_nativeApplicationUnInit( JNIEnv* env)
|
|
||||||
{
|
|
||||||
EWOL_WARNING("Event : UnInit application");
|
|
||||||
// unset all windows
|
|
||||||
ewol::DisplayWindows(NULL);
|
|
||||||
// call application to uninit
|
|
||||||
APP_UnInit();
|
|
||||||
// uninit Ewol
|
|
||||||
ewol::UnInit();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Call to render the next GL frame */
|
|
||||||
void Java_com_example_ewolAbstraction_EwolRenderer_nativeRender( JNIEnv* env )
|
|
||||||
{
|
|
||||||
long curTime;
|
|
||||||
|
|
||||||
/* NOTE: if sDemoStopped is TRUE, then we re-render the same frame
|
|
||||||
* on each iteration.
|
|
||||||
*/
|
|
||||||
if (sDemoStopped) {
|
|
||||||
curTime = sTimeStopped + sTimeOffset;
|
|
||||||
} else {
|
|
||||||
curTime =times(NULL) + sTimeOffset;
|
|
||||||
if (sTimeOffsetInit == 0) {
|
|
||||||
sTimeOffsetInit = 1;
|
|
||||||
sTimeOffset = -curTime;
|
|
||||||
curTime = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Draw();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EWOL_NativeEventUnknow(int eventID)
|
||||||
|
{
|
||||||
|
EWOL_WARNING("Event : Unknow ID=" << eventID);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EWOL_NativeParamSetArchiveDir(int mode, const char* str)
|
||||||
|
{
|
||||||
|
switch(mode)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
EWOL_WARNING("Directory APK : path=" << str);
|
||||||
|
etk::SetBaseFolderData(str);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
EWOL_WARNING("Directory mode=FILE path=" << str);
|
||||||
|
etk::SetBaseFolderDataUser(str);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
EWOL_WARNING("Directory mode=CACHE path=" << str);
|
||||||
|
etk::SetBaseFolderCache(str);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
EWOL_WARNING("Directory mode=EXTERNAL_CACHE path=" << str);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
EWOL_WARNING("Directory mode=???? path=" << str);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool isAlreadyInit = false;
|
||||||
|
|
||||||
|
void EWOL_NativeApplicationInit(void)
|
||||||
|
{
|
||||||
|
EWOL_WARNING("Event : Init Application");
|
||||||
|
if (false == isAlreadyInit) {
|
||||||
|
ewol::Init(0, NULL);
|
||||||
|
APP_Init(0, NULL);
|
||||||
|
isAlreadyInit = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void EWOL_NativeApplicationUnInit(void)
|
||||||
|
{
|
||||||
|
EWOL_WARNING("Event : UnInit application");
|
||||||
|
// unset all windows
|
||||||
|
ewol::DisplayWindows(NULL);
|
||||||
|
// call application to uninit
|
||||||
|
APP_UnInit();
|
||||||
|
// uninit Ewol
|
||||||
|
ewol::UnInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Call to render the next GL frame */
|
||||||
|
void EWOL_NativeRender(void)
|
||||||
|
{
|
||||||
|
long curTime;
|
||||||
|
|
||||||
|
/* NOTE: if sDemoStopped is TRUE, then we re-render the same frame
|
||||||
|
* on each iteration.
|
||||||
|
*/
|
||||||
|
if (sDemoStopped) {
|
||||||
|
curTime = sTimeStopped + sTimeOffset;
|
||||||
|
} else {
|
||||||
|
curTime =times(NULL) + sTimeOffset;
|
||||||
|
if (sTimeOffsetInit == 0) {
|
||||||
|
sTimeOffsetInit = 1;
|
||||||
|
sTimeOffset = -curTime;
|
||||||
|
curTime = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
package com.__PROJECT_VENDOR__.ewolAbstraction;
|
package com.__PROJECT_VENDOR__.__PROJECT_PACKAGE__;
|
||||||
|
|
||||||
import javax.microedition.khronos.egl.EGLConfig;
|
import javax.microedition.khronos.egl.EGLConfig;
|
||||||
import javax.microedition.khronos.opengles.GL10;
|
import javax.microedition.khronos.opengles.GL10;
|
||||||
@ -37,7 +37,7 @@ public class __PROJECT_NAME__ extends Activity {
|
|||||||
private GLSurfaceView mGLView;
|
private GLSurfaceView mGLView;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
System.loadLibrary("ewolabstraction");
|
System.loadLibrary("__PROJECT_PACKAGE__");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void onCreate(Bundle savedInstanceState) {
|
@Override protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -91,7 +91,7 @@ class EwolGLSurfaceView extends GLSurfaceView {
|
|||||||
ApplicationInfo appInfo = null;
|
ApplicationInfo appInfo = null;
|
||||||
PackageManager packMgmr = context.getPackageManager();
|
PackageManager packMgmr = context.getPackageManager();
|
||||||
try {
|
try {
|
||||||
appInfo = packMgmr.getApplicationInfo("com.__PROJECT_VENDOR__.ewolAbstraction", 0);
|
appInfo = packMgmr.getApplicationInfo("com.__PROJECT_VENDOR__.__PROJECT_PACKAGE__", 0);
|
||||||
} catch (NameNotFoundException e) {
|
} catch (NameNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new RuntimeException("Unable to locate assets, aborting...");
|
throw new RuntimeException("Unable to locate assets, aborting...");
|
||||||
|
94
SourcesJava/ewolAndroidAbstraction.cpp
Normal file
94
SourcesJava/ewolAndroidAbstraction.cpp
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
/**
|
||||||
|
*******************************************************************************
|
||||||
|
* @file ewolAndroidAbstraction.cpp
|
||||||
|
* @brief User abstraction for Android (Sources)
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @date 14/12/2011
|
||||||
|
* @par Project
|
||||||
|
* ewol
|
||||||
|
*
|
||||||
|
* @par Copyright
|
||||||
|
* Copyright 2011 Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY.
|
||||||
|
*
|
||||||
|
* Licence summary :
|
||||||
|
* You can modify and redistribute the sources code and binaries.
|
||||||
|
* You can send me the bug-fix
|
||||||
|
*
|
||||||
|
* Term of the licence in in the file licence.txt.
|
||||||
|
*
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <jni.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
// declaration of the ewol android abstraction ...
|
||||||
|
void EWOL_NativeInit(void);
|
||||||
|
void EWOL_NativeResize(int w, int h );
|
||||||
|
void EWOL_NativeDone(void);
|
||||||
|
void EWOL_NativeEventInputMotion(int pointerID, float x, float y );
|
||||||
|
void EWOL_NativeEventInputState(int pointerID, bool isUp, float x, float y );
|
||||||
|
void EWOL_NativeParamSetArchiveDir(int mode, const char* str);
|
||||||
|
void EWOL_NativeApplicationInit(void);
|
||||||
|
void EWOL_NativeApplicationUnInit(void);
|
||||||
|
void EWOL_NativeRender(void);
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
|
||||||
|
/* Call to initialize the graphics state */
|
||||||
|
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolRenderer_nativeInit( JNIEnv* env )
|
||||||
|
{
|
||||||
|
EWOL_NativeInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolRenderer_nativeResize( JNIEnv* env, jobject thiz, jint w, jint h )
|
||||||
|
{
|
||||||
|
EWOL_NativeResize(w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolRenderer_nativeDone( JNIEnv* env )
|
||||||
|
{
|
||||||
|
EWOL_NativeDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolGLSurfaceView_nativeEventInputMotion( JNIEnv* env, jobject thiz, jint pointerID, jfloat x, jfloat y )
|
||||||
|
{
|
||||||
|
EWOL_NativeEventInputMotion(pointerID, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolGLSurfaceView_nativeEventInputState( JNIEnv* env, jobject thiz, jint pointerID, jboolean isUp, jfloat x, jfloat y )
|
||||||
|
{
|
||||||
|
EWOL_NativeEventInputState(pointerID, isUp, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolGLSurfaceView_nativeParamSetArchiveDir( JNIEnv* env, jobject thiz, jint mode, jstring myString)
|
||||||
|
{
|
||||||
|
const char* str = env->GetStringUTFChars(myString,0);
|
||||||
|
EWOL_NativeParamSetArchiveDir(mode, str);
|
||||||
|
//env->ReleaseStringUTFChars(str,myString,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolGLSurfaceView_nativeApplicationInit( JNIEnv* env)
|
||||||
|
{
|
||||||
|
EWOL_NativeApplicationInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolGLSurfaceView_nativeApplicationUnInit( JNIEnv* env)
|
||||||
|
{
|
||||||
|
EWOL_NativeApplicationUnInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolRenderer_nativeRender( JNIEnv* env )
|
||||||
|
{
|
||||||
|
EWOL_NativeRender();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user