Ticket #1050: poly.diff

File poly.diff, 2.8 KB (added by tryagain, 8 years ago)

Another variant of poly optimization

  • navit/transform.c

     
    438438                        xc=c1.x;
    439439                        yc=c1.y;
    440440                }
    441                 if (i != 0 && i != count-1 && mindist) {
     441/*              if (i != 0 && i != count-1 && mindist) {
    442442                        if (xc > c[k].x-mindist && xc < c[k].x+mindist && yc > c[k].y-mindist && yc < c[k].y+mindist &&
    443443                                (c[i+1].x != c[0].x || c[i+1].y != c[0].y))
    444444                                continue;
    445445                        k=i;
    446                 }
     446                }*/
    447447                xm=xc;
    448448                ym=yc;
    449449//              dbg(2,"0x%x, 0x%x - 0x%x,0x%x contains 0x%x,0x%x\n", t->r.lu.x, t->r.lu.y, t->r.rl.x, t->r.rl.y, c->x, c->y);
     
    513513                }
    514514                xc+=t->offx;
    515515                yc+=t->offy;
     516
     517                if (i != 0 && i != count-1 && mindist) {
     518                        /* We expect values of mindist to be within 0..5 pixels.
     519                           That gives difference of about 1 pixel in worst case between abs(dx)+abs(dy) and sqrt(dx*dx+dy*dy).
     520                           Should anybody care about that inaccuracy? */
     521                        if ( (abs(xc - p[k].x) + abs(yc - p[k].y)) < mindist &&
     522                                (c[i+1].x != c[0].x || c[i+1].y != c[0].y))
     523                                continue;
     524                        k=j;
     525                }               
     526
    516527                p[j].x=xc;
    517528                p[j].y=yc;
    518529                if (width_return) {
  • navit/graphics.c

     
    18781878                graphics_draw_polygon_clipped(gra, gc, pa, count);
    18791879                break;
    18801880        case element_polyline:
    1881                 {
     1881                {       
    18821882                        gc->meth.gc_set_linewidth(gc->priv, 1);
    18831883                        if (e->u.polyline.width > 0 && e->u.polyline.dash_num > 0)
    18841884                                graphics_gc_set_dashes(gc, e->u.polyline.width,
     
    23152315        if(displaylist->dc.trans!=trans)
    23162316                displaylist->dc.trans=transform_dup(trans);
    23172317        displaylist->dc.gra=gra;
    2318         displaylist->dc.mindist=transform_get_scale(trans)/2;
     2318        displaylist->dc.mindist=flags&512?15:2;
    23192319        // FIXME find a better place to set the background color
    23202320        if (l) {
    23212321                graphics_gc_set_background(gra->gc[0], &l->color);
     
    26522652        struct point *pa=g_alloca(sizeof(struct point)*displaylist->dc.maxlen);
    26532653        int count;
    26542654
    2655         count=transform(displaylist->dc.trans, displaylist->dc.pro, di->c, pa, di->count, 1, 0, NULL);
     2655        count=transform(displaylist->dc.trans, displaylist->dc.pro, di->c, pa, di->count, 0, 0, NULL);
    26562656
    26572657        if (di->item.type < type_line) {
    26582658                return within_dist_point(p, &pa[0], dist);
  • navit/navit.c

     
    540540                graphics_displaylist_move(this_->displaylist, dx, dy);
    541541#endif
    542542                graphics_draw_cancel(this_->gra, this_->displaylist);
    543                 graphics_displaylist_draw(this_->gra, this_->displaylist, tr, this_->layout_current, this_->graphics_flags);
     543                graphics_displaylist_draw(this_->gra, this_->displaylist, tr, this_->layout_current, this_->graphics_flags|512);
    544544                transform_destroy(tr);
    545545                this_->moved=1;
    546546        }