… | |
… | |
2475 | int yspacing=height/2; |
2475 | int yspacing=height/2; |
2476 | int xspacing=height/4; |
2476 | int xspacing=height/4; |
2477 | int imperial=0; |
2477 | int imperial=0; |
2478 | |
2478 | |
2479 | if (navit_get_attr(navit, attr_imperial, &imperial_attr, NULL)) |
2479 | if (navit_get_attr(navit, attr_imperial, &imperial_attr, NULL)) |
|
|
2480 | { |
2480 | imperial=imperial_attr.u.num; |
2481 | imperial=imperial_attr.u.num; |
|
|
2482 | } |
2481 | |
2483 | |
2482 | vehicle_attr.u.vehicle=NULL; |
2484 | vehicle_attr.u.vehicle=NULL; |
2483 | oti=this->items; |
2485 | oti=this->items; |
2484 | str=NULL; |
2486 | str=NULL; |
2485 | |
2487 | |
… | |
… | |
2517 | |
2519 | |
2518 | if (item) { |
2520 | if (item) { |
2519 | //dbg(0,"name %s\n", item_to_name(item->type)); |
2521 | //dbg(0,"name %s\n", item_to_name(item->type)); |
2520 | //dbg(0,"type %s\n", attr_to_name(oti->attr_typ)); |
2522 | //dbg(0,"type %s\n", attr_to_name(oti->attr_typ)); |
2521 | if (item_attr_get(item, oti->attr_typ, &attr)) |
2523 | if (item_attr_get(item, oti->attr_typ, &attr)) |
|
|
2524 | { |
2522 | value=osd_text_format_attr(&attr, oti->format, imperial); |
2525 | value=osd_text_format_attr(&attr, oti->format, imperial); |
|
|
2526 | } |
2523 | id_string=g_strdup_printf("navigation:%s:%s",item_to_name(item->type),attr_to_name(oti->attr_typ)); |
2527 | id_string=g_strdup_printf("navigation:%s:%s",item_to_name(item->type),attr_to_name(oti->attr_typ)); |
2524 | } |
2528 | } |
2525 | if (nav_mr) |
2529 | if (nav_mr) |
2526 | map_rect_destroy(nav_mr); |
2530 | map_rect_destroy(nav_mr); |
2527 | } else if (oti->section == attr_vehicle) { |
2531 | } else if (oti->section == attr_vehicle) { |
… | |
… | |
2529 | navit_get_attr(navit, attr_vehicle, &vehicle_attr, NULL); |
2533 | navit_get_attr(navit, attr_vehicle, &vehicle_attr, NULL); |
2530 | } |
2534 | } |
2531 | if (vehicle_attr.u.vehicle) { |
2535 | if (vehicle_attr.u.vehicle) { |
2532 | if (vehicle_get_attr(vehicle_attr.u.vehicle, oti->attr_typ, &attr, NULL)) { |
2536 | if (vehicle_get_attr(vehicle_attr.u.vehicle, oti->attr_typ, &attr, NULL)) { |
2533 | value=osd_text_format_attr(&attr, oti->format, imperial); |
2537 | value=osd_text_format_attr(&attr, oti->format, imperial); |
|
|
2538 | id_string=g_strdup_printf("vehicle:text:"); |
2534 | } |
2539 | } |
2535 | } |
2540 | } |
|
|
2541 | } |
2536 | } else if (oti->section == attr_tracking) { |
2542 | else if (oti->section == attr_tracking) |
|
|
2543 | { |
2537 | if (navit) { |
2544 | if (navit) |
|
|
2545 | { |
2538 | tracking = navit_get_tracking(navit); |
2546 | tracking = navit_get_tracking(navit); |
2539 | route = navit_get_route(navit); |
2547 | route = navit_get_route(navit); |
2540 | } |
2548 | } |
|
|
2549 | |
2541 | if (tracking) { |
2550 | if (tracking) |
|
|
2551 | { |
2542 | item=tracking_get_current_item(tracking); |
2552 | item=tracking_get_current_item(tracking); |
2543 | if (item && (oti->attr_typ == attr_speed)) { |
2553 | if (item && (oti->attr_typ == attr_speed)) |
|
|
2554 | { |
2544 | double routespeed = -1; |
2555 | double routespeed = -1; |
2545 | int *flags=tracking_get_current_flags(tracking); |
2556 | int *flags=tracking_get_current_flags(tracking); |
2546 | if (flags && (*flags & AF_SPEED_LIMIT) && tracking_get_attr(tracking, attr_maxspeed, &maxspeed_attr, NULL)) { |
2557 | if (flags && (*flags & AF_SPEED_LIMIT) && tracking_get_attr(tracking, attr_maxspeed, &maxspeed_attr, NULL)) |
|
|
2558 | { |
2547 | routespeed = maxspeed_attr.u.num; |
2559 | routespeed = maxspeed_attr.u.num; |
2548 | } |
2560 | } |
|
|
2561 | |
2549 | if (routespeed == -1) { |
2562 | if (routespeed == -1) |
|
|
2563 | { |
2550 | struct vehicleprofile *prof=navit_get_vehicleprofile(navit); |
2564 | struct vehicleprofile *prof=navit_get_vehicleprofile(navit); |
2551 | struct roadprofile *rprof=NULL; |
2565 | struct roadprofile *rprof=NULL; |
2552 | if (prof) |
2566 | if (prof) |
|
|
2567 | { |
2553 | rprof=vehicleprofile_get_roadprofile(prof, item->type); |
2568 | rprof=vehicleprofile_get_roadprofile(prof, item->type); |
|
|
2569 | } |
2554 | if (rprof) { |
2570 | if (rprof) |
|
|
2571 | { |
2555 | routespeed=rprof->speed; |
2572 | routespeed=rprof->speed; |
2556 | } |
2573 | } |
2557 | } |
2574 | } |
2558 | |
2575 | |
2559 | value = format_speed(routespeed,"", oti->format, imperial); |
2576 | value = format_speed(routespeed,"", oti->format, imperial); |
|
|
2577 | id_string=g_strdup_printf("tracking:speed:"); |
|
|
2578 | } |
2560 | } else if (item) { |
2579 | else if (item) |
|
|
2580 | { |
2561 | if (tracking_get_attr(tracking, oti->attr_typ, &attr, NULL)) |
2581 | if (tracking_get_attr(tracking, oti->attr_typ, &attr, NULL)) |
|
|
2582 | { |
2562 | value=osd_text_format_attr(&attr, oti->format, imperial); |
2583 | value=osd_text_format_attr(&attr, oti->format, imperial); |
|
|
2584 | id_string=g_strdup_printf("tracking:text:"); |
|
|
2585 | } |
2563 | } |
2586 | } |
2564 | } |
2587 | } |
2565 | |
2588 | } |
2566 | } else if (oti->section == attr_navit) { |
2589 | else if (oti->section == attr_navit) |
|
|
2590 | { |
2567 | if (oti->attr_typ == attr_message) { |
2591 | if (oti->attr_typ == attr_message) |
|
|
2592 | { |
2568 | struct message *msg; |
2593 | struct message *msg; |
2569 | int len,offset; |
2594 | int len,offset; |
2570 | char *tmp; |
2595 | char *tmp; |
2571 | |
2596 | |
2572 | msg = navit_get_messages(navit); |
2597 | msg = navit_get_messages(navit); |
… | |
… | |
2597 | |
2622 | |
2598 | // id_string=g_strdup_printf("%s#+#%s:%s",id_string, str ? str:"",value ? value:" "); |
2623 | // id_string=g_strdup_printf("%s#+#%s:%s",id_string, str ? str:"",value ? value:" "); |
2599 | graphics_send_osd_values(this->osd_item.gr, this->osd_item.graphic_fg_text,"osd_text_draw","draw_text",id_string,value ? value : "", 0,0,0,0, 0.0,0.0,0.0); |
2624 | graphics_send_osd_values(this->osd_item.gr, this->osd_item.graphic_fg_text,"osd_text_draw","draw_text",id_string,value ? value : "", 0,0,0,0, 0.0,0.0,0.0); |
2600 | //dbg(0,"%s\n",id_string); |
2625 | //dbg(0,"%s\n",id_string); |
2601 | if (id_string) |
2626 | if (id_string) |
|
|
2627 | { |
2602 | g_free(id_string); |
2628 | g_free(id_string); |
2603 | |
2629 | } |
2604 | |
|
|
2605 | |
2630 | |
2606 | next=g_strdup_printf("%s%s",str ? str:"",value ? value:" "); |
2631 | next=g_strdup_printf("%s%s",str ? str:"",value ? value:" "); |
2607 | if (value) |
2632 | if (value) |
2608 | g_free(value); |
2633 | g_free(value); |
2609 | if (str) |
2634 | if (str) |
2610 | g_free(str); |
2635 | g_free(str); |
2611 | str=next; |
2636 | str=next; |
2612 | oti=oti->next; |
2637 | oti=oti->next; |
2613 | } |
2638 | } |
2614 | |
2639 | |
2615 | if ( this->last && str && !strcmp(this->last, str) ) { |
2640 | if ( this->last && str && !strcmp(this->last, str) ) |
|
|
2641 | { |
2616 | do_draw=0; |
2642 | do_draw=0; |
2617 | } else { |
2643 | } |
|
|
2644 | else |
|
|
2645 | { |
2618 | do_draw=1; |
2646 | do_draw=1; |
2619 | if (this->last) |
2647 | if (this->last) |
2620 | g_free(this->last); |
2648 | g_free(this->last); |
2621 | this->last = g_strdup(str); |
2649 | this->last = g_strdup(str); |
2622 | } |
2650 | } |
2623 | |
2651 | |
2624 | absbegin=str; |
2652 | absbegin=str; |
2625 | if (do_draw) { |
2653 | if (do_draw) |
|
|
2654 | { |
2626 | // **DISABLE** osd_std_draw(&this->osd_item); |
2655 | // **DISABLE** osd_std_draw(&this->osd_item); |
2627 | } |
2656 | } |
2628 | if (do_draw && str) |
2657 | if (do_draw && str) |
2629 | { |
2658 | { |
2630 | lines=0; |
2659 | lines=0; |
… | |
… | |
2642 | break; |
2671 | break; |
2643 | } |
2672 | } |
2644 | last++; |
2673 | last++; |
2645 | } |
2674 | } |
2646 | |
2675 | |
2647 | dbg(1,"this->align=%d\n", this->align); |
2676 | // dbg(1,"this->align=%d\n", this->align); |
2648 | switch (this->align & 51) { |
2677 | switch (this->align & 51) |
|
|
2678 | { |
2649 | case 1: |
2679 | case 1: |
2650 | p.y=0; |
2680 | p.y=0; |
2651 | break; |
2681 | break; |
2652 | case 2: |
2682 | case 2: |
2653 | p.y=(this->osd_item.h-lines*(height+yspacing)-yspacing); |
2683 | p.y=(this->osd_item.h-lines*(height+yspacing)-yspacing); |
… | |
… | |
2658 | this->osd_item.h = (lines-1) * (height+yspacing) + height; |
2688 | this->osd_item.h = (lines-1) * (height+yspacing) + height; |
2659 | } else { |
2689 | } else { |
2660 | this->osd_item.h = 0; |
2690 | this->osd_item.h = 0; |
2661 | } |
2691 | } |
2662 | |
2692 | |
2663 | if (do_draw) { |
2693 | if (do_draw) |
|
|
2694 | { |
2664 | osd_std_resize(&this->osd_item); |
2695 | osd_std_resize(&this->osd_item); |
2665 | } |
2696 | } |
2666 | default: |
2697 | default: |
2667 | p.y=(this->osd_item.h-lines*(height+yspacing)-yspacing)/2; |
2698 | p.y=(this->osd_item.h-lines*(height+yspacing)-yspacing)/2; |
2668 | } |
2699 | } |
2669 | |
2700 | |
2670 | while (str) |
2701 | while (str) |
2671 | { |
2702 | { |
2672 | next=strstr(str, "\\n"); |
2703 | next=strstr(str, "\\n"); |
2673 | if (next) { |
2704 | if (next) |
|
|
2705 | { |
2674 | *next='\0'; |
2706 | *next='\0'; |
2675 | next+=2; |
2707 | next+=2; |
2676 | } |
2708 | } |
2677 | graphics_get_text_bbox(this->osd_item.gr, |
2709 | graphics_get_text_bbox(this->osd_item.gr, |
2678 | this->osd_item.font, |
2710 | this->osd_item.font, |
2679 | str, 0x10000, |
2711 | str, 0x10000, |
2680 | 0x0, p2, 0); |
2712 | 0x0, p2, 0); |
2681 | switch (this->align & 12) { |
2713 | switch (this->align & 12) |
|
|
2714 | { |
2682 | case 4: |
2715 | case 4: |
2683 | p.x=xspacing; |
2716 | p.x=xspacing; |
2684 | break; |
2717 | break; |
2685 | case 8: |
2718 | case 8: |
2686 | p.x=this->osd_item.w-(p2[2].x-p2[0].x)-xspacing; |
2719 | p.x=this->osd_item.w-(p2[2].x-p2[0].x)-xspacing; |
… | |
… | |
2701 | 0); |
2734 | 0); |
2702 | */ |
2735 | */ |
2703 | str=next; |
2736 | str=next; |
2704 | } |
2737 | } |
2705 | } |
2738 | } |
|
|
2739 | |
2706 | if(do_draw) { |
2740 | if (do_draw) |
|
|
2741 | { |
2707 | // **DISABLE** graphics_draw_mode(this->osd_item.gr, draw_mode_end); |
2742 | // **DISABLE** graphics_draw_mode(this->osd_item.gr, draw_mode_end); |
2708 | } |
2743 | } |
2709 | g_free(absbegin); |
2744 | g_free(absbegin); |
2710 | |
2745 | |
2711 | } |
2746 | } |