/[zanavi_public1]/navit/navit/osd/core/osd_core.c
ZANavi

Diff of /navit/navit/osd/core/osd_core.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 2 Revision 27
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}

Legend:
Removed from v.2  
changed lines
  Added in v.27

   
Visit the ZANavi Wiki