diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2009-01-02 21:18:55 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2009-01-02 21:18:55 +0000 |
commit | 3945f92da6233b3651311a5e935c18420f2a5183 (patch) | |
tree | 2c2a6ce87777d610c48fba35786cecc05815e1b7 /navit/item.c | |
parent | ce0446ea8122ef70684424258349c9127c56f8a4 (diff) | |
download | navit-3945f92da6233b3651311a5e935c18420f2a5183.tar.gz |
Fix:Core:Made some performance critical parts a bit faster
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@1881 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/item.c')
-rw-r--r-- | navit/item.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/navit/item.c b/navit/item.c index 5de4bf74c..8cd20fee2 100644 --- a/navit/item.c +++ b/navit/item.c @@ -54,6 +54,33 @@ item_coord_get(struct item *it, struct coord *c, int count) } int +item_coord_get_with_bbox(struct item *it, struct coord *c, int count, struct coord_rect *r) +{ + int i,ret=it->meth->item_coord_get(it->priv_data, c, count); + struct coord_rect r2; + if (ret <= 0) + return ret; + if (ret == 1) { + r->rl=r->lu=c[0]; + return ret; + } + r2.lu=c[0]; + r2.rl=c[0]; + for (i = 1 ; i < ret ; i++) { + if (r2.lu.x > c[i].x) + r2.lu.x=c[i].x; + if (r2.rl.x < c[i].x) + r2.rl.x=c[i].x; + if (r2.rl.y > c[i].y) + r2.rl.y=c[i].y; + if (r2.lu.y < c[i].y) + r2.lu.y=c[i].y; + } + *r=r2; + return ret; +} + +int item_coord_get_pro(struct item *it, struct coord *c, int count, enum projection to) { int ret=item_coord_get(it, c, count); |