From 277afc9a84d5ea2e5f1aae3ad4915208b56e9b0b Mon Sep 17 00:00:00 2001
From: Maxime Graulich <maxime.graulich@gmail.com>
Date: Fri, 4 Apr 2014 12:03:08 +0000
Subject: [PATCH] Android: adapt font size according to screen density

---
 contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java        | 6 +++---
 .../mobile/Android/src/org/geuz/onelab/MainActivity.java    | 2 +-
 contrib/mobile/androidGModel.cpp                            | 4 ++--
 contrib/mobile/androidGModel.h                              | 4 ++--
 contrib/mobile/drawContext.cpp                              | 4 ++--
 contrib/mobile/drawContext.h                                | 2 +-
 contrib/mobile/iOS/Onelab/EAGLView.mm                       | 2 +-
 7 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java b/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java
index fbcc0f0e6a..1436341aa3 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java
@@ -14,7 +14,7 @@ public class Gmsh implements Parcelable {
 		System.loadLibrary("GetDP");
 		System.loadLibrary("Onelab");
     }
-	private native long init(); // Init Gmsh
+	private native long init(float fontFactor); // Init Gmsh
 	private native void loadFile(long ptr, String name); // load a file(OpenProjet)
 	private native void initView(long ptr, int w, int h); // Called each time the GLView change
 	private native void drawView(long ptr); // Called each time the GLView request a render
@@ -44,8 +44,8 @@ public class Gmsh implements Parcelable {
 	private long ptr;
 	private Handler handler;
 
-	public Gmsh(Handler handler) {
-		ptr = this.init();
+	public Gmsh(Handler handler, float fontFactor) {
+		ptr = this.init(fontFactor);
 		this.handler = handler;
 	}
 
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
index 0234b3796b..c3464620f4 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
@@ -50,7 +50,7 @@ public class MainActivity extends Activity{
 		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 		getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
 		setContentView(R.layout.main_activity_layout);
-		_gmsh = new Gmsh(mainHandler);
+		_gmsh = new Gmsh(mainHandler, getResources().getDisplayMetrics().density);
 		_notify = false;
 		ActionBar actionBar = getActionBar();
 		actionBar.setDisplayHomeAsUpEnabled(true);
diff --git a/contrib/mobile/androidGModel.cpp b/contrib/mobile/androidGModel.cpp
index 3df9cb27f1..d7096b0e4b 100644
--- a/contrib/mobile/androidGModel.cpp
+++ b/contrib/mobile/androidGModel.cpp
@@ -126,13 +126,13 @@ extern "C" {
     return JNI_VERSION_1_6;
   }
   JNIEXPORT jlong JNICALL Java_org_geuz_onelab_Gmsh_init
-  (JNIEnv *env, jobject obj)
+  (JNIEnv *env, jobject obj, jfloat fontFactor)
   {
     if(gCallbackObject != NULL) env->DeleteGlobalRef(gCallbackObject);
     gCallbackObject = env->NewGlobalRef(obj);
     gJavaVM->GetEnv((void**)&env, JNI_VERSION_1_6);
     Msg::SetCallback(new MobileMessage());
-    return reinterpret_cast<jlong>(new drawContext());
+    return reinterpret_cast<jlong>(new drawContext(fontFactor));
   }
   JNIEXPORT void JNICALL Java_org_geuz_onelab_Gmsh_loadFile
   (JNIEnv *env, jobject obj, jlong jptr, jstring jname)
diff --git a/contrib/mobile/androidGModel.h b/contrib/mobile/androidGModel.h
index 35d4d565d4..fca4dfdd68 100644
--- a/contrib/mobile/androidGModel.h
+++ b/contrib/mobile/androidGModel.h
@@ -12,10 +12,10 @@ extern "C" {
 /*
  * Class:     org_geuz_onelab_Gmsh
  * Method:    init
- * Signature: (Ljava/lang/String;)J
+ * Signature: (F)J
  */
 JNIEXPORT jlong JNICALL Java_org_geuz_onelab_Gmsh_init
-  (JNIEnv *, jobject);
+  (JNIEnv *, jobject, jfloat);
 
 /*
  * Class:     org_geuz_onelab_Gmsh
diff --git a/contrib/mobile/drawContext.cpp b/contrib/mobile/drawContext.cpp
index 758465ad3a..24a19cb4c1 100644
--- a/contrib/mobile/drawContext.cpp
+++ b/contrib/mobile/drawContext.cpp
@@ -53,7 +53,7 @@
 static bool locked = false;
 static bool onelabStop = false;
 
-drawContext::drawContext(bool isRetina)
+drawContext::drawContext(float fontFactor)
 {
   GmshInitialize();
   GmshSetOption("General", "Terminal", 1.0);
@@ -66,7 +66,7 @@ drawContext::drawContext(bool isRetina)
 
   _fillMesh = false;
   _gradiant = true;
-  _fontFactor = isRetina ? 1.5 : 1;
+  _fontFactor = fontFactor;
 }
 
 static void checkGlError(const char* op)
diff --git a/contrib/mobile/drawContext.h b/contrib/mobile/drawContext.h
index 0f49820607..4ce28c7905 100644
--- a/contrib/mobile/drawContext.h
+++ b/contrib/mobile/drawContext.h
@@ -44,7 +44,7 @@ private:
   void drawPView(PView *p);
   void drawVectorArray(PViewOptions *opt, VertexArray *va);
 public:
-  drawContext(bool isRetina=false);
+  drawContext(float fontFactor=1.);
   ~drawContext(){}
   void load(std::string filename);
   void eventHandler(int event, float x=0, float y=0);
diff --git a/contrib/mobile/iOS/Onelab/EAGLView.mm b/contrib/mobile/iOS/Onelab/EAGLView.mm
index 5922c73004..04b4cba825 100644
--- a/contrib/mobile/iOS/Onelab/EAGLView.mm
+++ b/contrib/mobile/iOS/Onelab/EAGLView.mm
@@ -54,7 +54,7 @@
             //[self release];
             return nil;
         }
-        mContext = new drawContext(eaglLayer.contentsScale==2);
+        mContext = new drawContext((eaglLayer.contentsScale==2)? 1.5:1);
     }
     rendering = NO;
     return self;
-- 
GitLab