summaryrefslogtreecommitdiff
path: root/navit/graphics
diff options
context:
space:
mode:
authormvglasow <michael -at- vonglasow.com>2016-01-19 17:02:07 +0100
committermvglasow <michael -at- vonglasow.com>2016-02-02 09:58:31 +0100
commit2309b377da6e89f1fc35bef42577b8de7a80ef85 (patch)
treeb06de7bb910ea65c530e6df45bf72787a7958c87 /navit/graphics
parent97e493aaacf25e4a56cb9c8dae8b4e90615ca2c9 (diff)
downloadnavit-2309b377da6e89f1fc35bef42577b8de7a80ef85.tar.gz
Add:graphics_android:Implement padding for areas obstructed by system UI
Signed-off-by: mvglasow <michael -at- vonglasow.com>
Diffstat (limited to 'navit/graphics')
-rw-r--r--navit/graphics/android/graphics_android.c35
1 files changed, 32 insertions, 3 deletions
diff --git a/navit/graphics/android/graphics_android.c b/navit/graphics/android/graphics_android.c
index 2bfbacab4..2ef9400b4 100644
--- a/navit/graphics/android/graphics_android.c
+++ b/navit/graphics/android/graphics_android.c
@@ -64,6 +64,7 @@ struct graphics_priv {
struct callback_list *cbl;
struct window win;
+ struct padding *padding;
};
struct graphics_font_priv {
@@ -419,9 +420,11 @@ static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graph
static void *
get_data(struct graphics_priv *this, const char *type)
{
- if (strcmp(type,"window"))
- return NULL;
- return &this->win;
+ if (!strcmp(type,"padding"))
+ return this->padding;
+ if (!strcmp(type,"window"))
+ return &this->win;
+ return NULL;
}
static void image_free(struct graphics_priv *gr, struct graphics_image_priv *priv)
@@ -496,10 +499,21 @@ static void
resize_callback(struct graphics_priv *gra, int w, int h)
{
dbg(lvl_debug,"w=%d h=%d ok\n",w,h);
+ dbg(lvl_debug,"gra=%p, %d callbacks in list\n", gra, g_list_length(gra->cbl));
callback_list_call_attr_2(gra->cbl, attr_resize, (void *)w, (void *)h);
}
static void
+padding_callback(struct graphics_priv *gra, int left, int top, int right, int bottom)
+{
+ dbg(lvl_debug, "win.padding left=%d top=%d right=%d bottom=%d ok\n", left, top, right, bottom);
+ gra->padding->left = left;
+ gra->padding->top = top;
+ gra->padding->right = right;
+ gra->padding->bottom = bottom;
+}
+
+static void
motion_callback(struct graphics_priv *gra, int x, int y)
{
struct point p;
@@ -569,6 +583,8 @@ graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, s
jmethodID cid, Context_getPackageName;
dbg(lvl_debug,"at 2 jnienv=%p\n",jnienv);
+ if (parent)
+ ret->padding = parent->padding;
if (!find_class_global("android/graphics/Paint", &ret->PaintClass))
return 0;
if (!find_method(ret->PaintClass, "<init>", "(I)V", &ret->Paint_init))
@@ -644,6 +660,14 @@ graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, s
cb=callback_new_1(callback_cast(resize_callback), ret);
(*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
+ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setPaddingChangedCallback", "(I)V");
+ if (cid == NULL) {
+ dbg(lvl_error,"no SetPaddingCallback method found\n");
+ return 0; /* exception thrown */
+ }
+ cb=callback_new_1(callback_cast(padding_callback), ret);
+ (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
+
cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setButtonCallback", "(I)V");
if (cid == NULL) {
dbg(lvl_error,"no SetButtonCallback method found\n");
@@ -801,6 +825,11 @@ graphics_android_new(struct navit *nav, struct graphics_methods *meth, struct at
ret->win.priv=ret;
ret->win.fullscreen=graphics_android_fullscreen;
ret->win.disable_suspend=graphics_android_disable_suspend;
+ ret->padding = g_new0(struct padding, 1);
+ ret->padding->left = 0;
+ ret->padding->top = 0;
+ ret->padding->right = 0;
+ ret->padding->bottom = 0;
if ((attr=attr_search(attrs, NULL, attr_use_camera))) {
use_camera=attr->u.num;
}