diff options
author | mdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-05-09 22:29:10 +0000 |
---|---|---|
committer | mdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-05-09 22:29:10 +0000 |
commit | 8da8d4a31876677a1b02fcd22c1e1989904b9e83 (patch) | |
tree | 61f226bc83baff4a5fab121f40a7db3ac0e99672 /navit/graphics/android/graphics_android.c | |
parent | 2102ee3511b4ada356fe8e324ff92e3b5e28fa69 (diff) | |
download | navit-8da8d4a31876677a1b02fcd22c1e1989904b9e83.tar.gz |
Add:graphics_android:Support dashed lines
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5774 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/graphics/android/graphics_android.c')
-rw-r--r-- | navit/graphics/android/graphics_android.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/navit/graphics/android/graphics_android.c b/navit/graphics/android/graphics_android.c index b2c7fc3b6..9930c8248 100644 --- a/navit/graphics/android/graphics_android.c +++ b/navit/graphics/android/graphics_android.c @@ -71,6 +71,8 @@ struct graphics_gc_priv { int linewidth; enum draw_mode_num mode; int a,r,g,b; + unsigned char *dashes; + int ndashes; }; struct graphics_image_priv { @@ -142,6 +144,7 @@ static struct graphics_font_priv *font_new(struct graphics_priv *gr, struct grap static void gc_destroy(struct graphics_gc_priv *gc) { + g_free(gc->dashes); g_free(gc); } @@ -154,6 +157,14 @@ gc_set_linewidth(struct graphics_gc_priv *gc, int w) static void gc_set_dashes(struct graphics_gc_priv *gc, int w, int offset, unsigned char *dash_list, int n) { + g_free(gc->dashes); + gc->ndashes=n; + if(n) { + gc->dashes=g_malloc(n); + memcpy(gc->dashes, dash_list, n); + } else { + gc->dashes=NULL; + } } static void @@ -267,22 +278,26 @@ static void initPaint(struct graphics_priv *gra, struct graphics_gc_priv *gc) static void draw_lines(struct graphics_priv *gra, struct graphics_gc_priv *gc, struct point *p, int count) { - int arrsize=1+4+count*2; + int arrsize=1+4+1+gc->ndashes+count*2; jint pc[arrsize]; int i; jintArray points; if (count <= 0) return; points = (*jnienv)->NewIntArray(jnienv,arrsize); - for (i = 0 ; i < count ; i++) { - pc[5+i*2]=p[i].x; - pc[5+i*2+1]=p[i].y; - } pc[0]=gc->linewidth; pc[1]=gc->a; pc[2]=gc->r; pc[3]=gc->g; pc[4]=gc->b; + pc[5]=gc->ndashes; + for (i = 0 ; i < gc->ndashes ; i++) { + pc[6+i] = gc->dashes[i]; + } + for (i = 0 ; i < count ; i++) { + pc[6+gc->ndashes+i*2]=p[i].x; + pc[6+gc->ndashes+i*2+1]=p[i].y; + } (*jnienv)->SetIntArrayRegion(jnienv, points, 0, arrsize, pc); (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_polyline, gc->gra->Paint, points); (*jnienv)->DeleteLocalRef(jnienv, points); |