From: <mar...@us...> - 2010-02-26 20:30:46
|
Revision: 2973 http://navit.svn.sourceforge.net/navit/?rev=2973&view=rev Author: martin-s Date: 2010-02-26 20:30:38 +0000 (Fri, 26 Feb 2010) Log Message: ----------- Fix:Core:Convert transformation while rendering Modified Paths: -------------- trunk/navit/navit/graphics.c trunk/navit/navit/transform.c trunk/navit/navit/transform.h Modified: trunk/navit/navit/graphics.c =================================================================== --- trunk/navit/navit/graphics.c 2010-02-26 20:28:07 UTC (rev 2972) +++ trunk/navit/navit/graphics.c 2010-02-26 20:30:38 UTC (rev 2973) @@ -1808,8 +1808,10 @@ int count,max=displaylist->dc.maxlen,workload=0; struct coord ca[max]; struct attr attr,attr2; + enum projection pro; profile(0,NULL); + pro=transform_get_projection(displaylist->dc.trans); while (!cancel) { if (!displaylist->msh) displaylist->msh=mapset_open(displaylist->ms); @@ -1832,6 +1834,8 @@ count=item_coord_get_within_selection(item, ca, item->type < type_line ? 1: max, displaylist->sel); if (! count) continue; + if (displaylist->dc.pro != pro) + transform_from_to_count(ca, displaylist->dc.pro, ca, pro, count); if (count == max) { dbg(0,"point count overflow %d for %s "ITEM_ID_FMT"\n", count,item_to_name(item->type),ITEM_ID_ARGS(*item)); displaylist->dc.maxlen=max*2; Modified: trunk/navit/navit/transform.c =================================================================== --- trunk/navit/navit/transform.c 2010-02-26 20:28:07 UTC (rev 2972) +++ trunk/navit/navit/transform.c 2010-02-26 20:30:38 UTC (rev 2973) @@ -300,6 +300,20 @@ } void +transform_from_to_count(struct coord *cfrom, enum projection from, struct coord *cto, enum projection to, int count) +{ + struct coord_geo g; + int i; + + for (i = 0 ; i < count ; i++) { + transform_to_geo(from, cfrom, &g); + transform_from_geo(to, &g, cto); + cfrom++; + cto++; + } +} + +void transform_from_to(struct coord *cfrom, enum projection from, struct coord *cto, enum projection to) { struct coord_geo g; Modified: trunk/navit/navit/transform.h =================================================================== --- trunk/navit/navit/transform.h 2010-02-26 20:28:07 UTC (rev 2972) +++ trunk/navit/navit/transform.h 2010-02-26 20:30:38 UTC (rev 2973) @@ -49,6 +49,7 @@ struct transformation *transform_dup(struct transformation *t); void transform_to_geo(enum projection pro, struct coord *c, struct coord_geo *g); void transform_from_geo(enum projection pro, struct coord_geo *g, struct coord *c); +void transform_from_to_count(struct coord *cfrom, enum projection from, struct coord *cto, enum projection to, int count); void transform_from_to(struct coord *cfrom, enum projection from, struct coord *cto, enum projection to); void transform_geo_to_cart(struct coord_geo *geo, navit_float a, navit_float b, struct coord_geo_cart *cart); void transform_cart_to_geo(struct coord_geo_cart *cart, navit_float a, navit_float b, struct coord_geo *geo); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |